class_docstr: Western Airlines Surname Match Rating Algorithm comparison rating
  https://en.wikipedia.org/wiki/Match_rating_approach
  https://github.com/Yomguithereal/talisman/blob/master/src/metrics/mra.js
class_docstr_tok: ["Western","Airlines","Surname","Match","Rating","Algorithm","comparison","rating","https",":","\/\/en.wikipedia.org\/wiki\/Match_rating_approach","https",":","\/\/github.com\/Yomguithereal\/talisman\/blob\/master\/src\/metrics\/mra.js"]
code: def __call__(self, *sequences: str) -> int:
      if not all(sequences):
          return 0
      sequences = [list(self._calc_mra(s)) for s in sequences]
      lengths = list(map(len, sequences))
      count = len(lengths)
      max_length = max(lengths)
      if abs(max_length - min(lengths)) > count:
          return 0
  
      for _ in range(count):
          new_sequences = []
          minlen = min(lengths)
          for chars in zip(*sequences):
              if not self._ident(*chars):
                  new_sequences.append(chars)
          new_sequences = map(list, zip(*new_sequences))
          # update sequences
          ss: Iterator[tuple[Any, Any]]
          ss = zip_longest(new_sequences, sequences, fillvalue=list())
          sequences = [s1 + s2[minlen:] for s1, s2 in ss]
          # update lengths
          lengths = list(map(len, sequences))
  
      if not lengths:
          return max_length
      return max_length - max(lengths)
  
file_path: textdistance/textdistance/algorithms/phonetic.py
imports: from __future__ import annotations
  from collections import defaultdict
  from itertools import groupby, zip_longest
  from typing import Any, Iterator, Sequence, TypeVar
  from .base import Base, BaseSimilarity
label_desc: Use image node_id 3 for calling the MRA obj's underlying member method code with example usage: obj.__call__() and returns: unknown, int, int, max_length