input: Write a function to take two matrices, A and B, and produce a matrix C where each element in C is the product of the corresponding elements in A and B. The function should return matrix C. If the matrices A and B do not have the same dimensions, the function should return "Matrices multiplication not possible".
  
  def elementwiseMatrixMultiplication(A, B):
      if len(A) != len(B) or len(A[0]) != len(B[0]):
          return "Matrices multiplication not possible"
  
      C = [[0 for i in range(len(A[0]))] for j in range(len(A))]
  
      for i in range(len(A)):
          for j in range(len(A[0])):
              C[i][j] = A[i][j] * B[i][j]
  
      return C
  
  A = [[3, 4], 
       [1, 2]]
  B = [[7, 5],
       [0, 1]]
  
  assert elementwiseMatrixMultiplication(A, B) == [[21, 20], [0, 2]]
  assert elementwiseMatrixMultiplication([[1, 2], [3, 4]], [[2, 3], [4, 5]]) == [[2, 6], [12, 20]]
  assert elementwiseMatrixMultiplication([[1], [2], [3]], [[4], [5], [6]]) == [[4], [10], [18]]
  assert elementwiseMatrixMultiplication([[1, 2, 3]], [[4, 5, 6]]) == [[4, 10, 18]]
  assert elementwiseMatrixMultiplication([[1, 2, 3]], [[4, 5]]) == "Matrices multiplication not possible"
output: def elementwiseMatrixMultiplication(A, B):
      if len(A) != len(B) or len(A[0]) != len(B[0]):
          return "Matrices multiplication not possible"
  
      C = [[0 for i in range(len(A[0]))] for j in range(len(A))]
  
      for i in range(len(A)):
          for j in range(len(A[0])):
              C[i][j] = A[i][j] * B[i][j]
  
      return C