input: Write a function that creates an AI program using TensorFlow and Keras to recognize handwritten letters and digits from the MNIST dataset. The function should preprocess the data, create a convolutional neural network model, compile and train the model, and finally evaluate the model's performance on the test set. The function should return the accuracy of the model on the test set. The function should handle the entire process from loading the dataset to evaluating the model.
  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