input: Write a function to create an AI program that recognizes handwritten letters and digits using Python. The function should load the MNIST dataset, preprocess the data, create a convolutional neural network model using TensorFlow and Keras, train the model, and then evaluate it using the test dataset. The function should return the accuracy of the model on the test dataset.
  
  assert recognize_handwritten_digits()==0.9
  assert recognize_handwritten_digits()==0.9
  assert recognize_handwritten_digits()==0.9
  assert recognize_handwritten_digits()==0.9
output: 
  def recognize_handwritten_digits():
      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)
  
      test_loss, test_acc = model.evaluate(test_images, test_labels)
      return test_acc
  