docs: def mutationhash(strings, nedit):
      """
      produce a hash with each key a nedit distance substitution for a set of
      strings. values of the hash is the set of strings the substitution could
      have come from
      """
      maxlen = max([len(string) for string in strings])
      indexes = generate_idx(maxlen, nedit)
      muthash = defaultdict(set)
      for string in strings:
          muthash[string].update([string])
          for x in substitution_set(string, indexes):
              muthash[x].update([string])
      return muthash