input: Write a python function to find the longest common substring from a list of strings.
  assert longest_common_substring(["bicycle", "icicle", "cicle"]) == "cicle"
  assert longest_common_substring(["apple", "apply", "ape"]) == "ap"
  assert longest_common_substring(["hello", "world", "hold"]) == "l"
  assert longest_common_substring(["python", "typhoon", "phone"]) == "on"
output: def longest_common_substring(strings):
      if not strings:
          return ""
      
      def get_substrings(s):
          substrings = set()
          length = len(s)
          for i in range(length):
              for j in range(i + 1, length + 1):
                  substrings.add(s[i:j])
          return substrings
  
      common_substrings = get_substrings(strings[0])
      for s in strings[1:]:
          common_substrings.intersection_update(get_substrings(s))
          
          if not common_substrings:
              return ""
      
      return max(common_substrings, key=len)