code: def levenshtein(x, y, normalisation=1.0, max_distance=20):
      x_len, y_len = len(x), len(y)
  
      # Opt out of some comparisons
      if abs(x_len - y_len) > max_distance:
          return abs(x_len - y_len) / normalisation
  
      v0 = np.arange(y_len + 1).astype(np.float64)
      v1 = np.zeros(y_len + 1)
  
      for i in range(x_len):
          v1[i] = i + 1
  
          for j in range(y_len):
              deletion_cost = v0[j + 1] + 1
              insertion_cost = v1[j] + 1
              substitution_cost = int(x[i] == y[j])
  
              v1[j + 1] = min(
                  deletion_cost, insertion_cost, substitution_cost
              )
  
          v0 = v1
  
          # Abort early if we've already exceeded max_dist
          if np.min(v0) > max_distance:
              return max_distance / normalisation
  
      return v0[y_len] / normalisation
  
imports: import numba
  import numpy
  import scipy.stats
  from sklearn.metrics import pairwise_distances
label_desc: Use image node_id 56 for calling a global function with example usage: levenshtein(x, y, normalisation, max_distance) and returns: unknown, unknown, unknown