input: def recognize_handwritten_digits() -> Model:
      """Generate a Machine Learning model in Python which can recognize handwritten digits from 0 to 9.
      The model is built using TensorFlow and Keras, with a neural network architecture that includes:
      - Input layer with shape (28, 28)
      - Hidden layer with 64 units and ReLU activation, followed by a Dropout layer with rate 0.5
      - Output layer with 10 units and softmax activation
      The model is compiled with categorical cross-entropy loss, Adam optimizer, and accuracy metric.
      The MNIST dataset is used for training and testing.
      >>> recognize_handwritten_digits()
      <tensorflow.python.keras.engine.functional.Functional object at 0x...>
      """
      # Importing necessary libraries
      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
  
      # Loading data
      (X_train, y_train), (X_test, y_test) = mnist.load_data()
  
      # Defining the neural network model
      # Input layer
      inputs = Input(shape=(28, 28,))
  
      # Hidden layer
      h1 = Dense(64, activation='relu')(inputs)
      h2 = Dropout(0.5)(h1)
  
      # Output layer
      outputs = Dense(10, activation='softmax')(h2)
  
      # Compiling the model
      model = Model(inputs=inputs, outputs=outputs)
      model.compile(loss='categorical_crossentropy',
                    optimizer='adam',
                    metrics=['accuracy'])
  
      # Data pre-processing
      # Reshape inputs from (60000, 28, 28) to (60000, 784)
      X_train = X_train.reshape(60000, 784)
      X_test = X_test.reshape(10000, 784)
  
      # Normalize pixel values
      X_train = X_train.astype('float32')
      X_train /= 255
      X_test = X_test.astype('float32')
      X_test /= 255
  
      # One-hot encode labels
      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=5, batch_size=128)
  
      return model
output:     
      # Fitting the model
      model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=5, batch_size=128)
  
      return model
  