input: Write a function to generate a Machine Learning model in Python which can recognize handwritten digits from 0 to 9. The function should load the MNIST dataset, define a neural network model, preprocess the data, compile the model, and fit the model with the training data. The function should return the trained model. If the function is successful, it should return the trained model; otherwise, it should return an error message.
  
  assert generate_digit_recognition_model()====""
output: def generate_digit_recognition_model():
      try:
          import tensorflow as tf
          from tensorflow.keras import datasets, layers, models
  
          (train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
          train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
          test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255
  
          model = models.Sequential([
              layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
              layers.MaxPooling2D((2, 2)),
              layers.Conv2D(64, (3, 3), activation='relu'),
              layers.MaxPooling2D((2, 2)),
              layers.Conv2D(64, (3, 3), activation='relu'),
              layers.Flatten(),
              layers.Dense(64, activation='relu'),
              layers.Dense(10, activation='softmax')
          ])
  
          model.compile(optimizer='adam',
                        loss='sparse_categorical_crossentropy',
                        metrics=['accuracy'])
  
          model.fit(train_images, train_labels, epochs=5)
          return model
      except Exception as e:
          return str(e)