code: def edit_distance_matrix(train_x, train_y=None):
      
      if train_y is None:
          ret = np.zeros((train_x.shape[0], train_x.shape[0]))
          for x_index, x in enumerate(train_x):
              for y_index, y in enumerate(train_x):
                  if x_index == y_index:
                      ret[x_index][y_index] = 0
                  elif x_index < y_index:
                      ret[x_index][y_index] = edit_distance(x, y)
                  else:
                      ret[x_index][y_index] = ret[y_index][x_index]
          return ret
      ret = np.zeros((train_x.shape[0], train_y.shape[0]))
      for x_index, x in enumerate(train_x):
          for y_index, y in enumerate(train_y):
              ret[x_index][y_index] = edit_distance(x, y)
      return ret
docs: Calculate the edit distance.
      Args:
          train_x: A list of neural architectures.
          train_y: A list of neural architectures.
      Returns:
          An edit-distance matrix.