input: 
  from typing import Tuple
  import numpy as np
  import pandas as pd
  from tensorflow.keras.datasets import mnist
  from tensorflow.keras.layers import Dense, Input, Dropout
  from tensorflow.keras.models import Model
  from tensorflow.keras.utils import to_categorical
  
  def train_handwritten_digit_recognizer(epochs: int = 5, batch_size: int = 128) -> Tuple[Model, float]:
      """
      Train a Neural Network model to recognize handwritten digits from 0 to 9 using the MNIST dataset.
      The function returns the trained model and the final validation accuracy.
      
      >>> model, acc = train_handwritten_digit_recognizer()
      >>> acc > 0.90
      True
      """
      
      # Loading data
      (X_train, y_train), (X_test, y_test) = mnist.load_data()
      
      # Defining the neural network model
      inputs = Input(shape=(28, 28,))
      h1 = Dense(64, activation='relu')(inputs)
      h2 = Dropout(0.5)(h1)
      outputs = Dense(10, activation='softmax')(h2)
      model = Model(inputs=inputs, outputs=outputs)
      model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
      
      # Data pre-processing
      X_train = X_train.reshape(60000, 784)
      X_test = X_test.reshape(10000, 784)
      X_train = X_train.astype('float32') / 255
      X_test = X_test.astype('float32') / 255
      y_train = to_categorical(y_train, num_classes=10)
      y_test = to_categorical(y_test, num_classes=10)
      
      # Fitting the model
      model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=epochs, batch_size=batch_size)
      
      # Evaluating the model
      test_loss, test_acc = model.evaluate(X_test, y_test)
      
      return model, test_acc
  
output:     return model, test_acc