code: def extract_common_stem(*args):
      
      l_s = [[OldNorseSyllable(syllable, VOWELS, CONSONANTS) for syllable in s.syllabify_ssp(word)] for word in args]
  
      nuclei = ["".join(syllables[0].nucleus) for syllables in l_s]
  
      # all_equal = True
      # if len(nuclei) > 1:
      #     for nucleus in nuclei:
      #         all_equal = nuclei[0] == nucleus and all_equal
      #         if not all_equal:
      #             break
      # if all_equal:
      #      return os.path.commonprefix(args)
      smallest = numpy.argmin([len(s) for s in args])
      for i, c in enumerate(args[smallest]):
          for other_word in args:
              if c != other_word[i]:
                  return args[smallest][:i]
      return args[smallest]
docs: Function which extract the longest common substring in a list of strings.
      This is a very basic function because it does not deal correctly with sound shifts (like u-umlaut and i-umlaut).
  
      >>> extract_common_stem("armr", "arms", "armar")
      'arm'
  
      >>> extract_common_stem("ketill", "ketils", "katlar")
      'k'
  
      # the given result is 'k', but the expected result should be 'katil'
  
      >>> extract_common_stem("mór", "mós", "móar")
      'mó'
  
      >>> extract_common_stem("söngr", "söngs", "söngvar")
      'söng'
  
  
      :param args:
      :return: