input: Write a function to find the longest common substring in two given strings. If there are multiple substrings of the same length, return any one of them. If there is no common substring, return an empty string.
  assert longest_common_substring("Helwallomst", "Welcome")=="Hel"
  assert longest_common_substring("abcdef", "defghi")=="def"
  assert longest_common_substring("python", "typhon")=="ython"
  assert longest_common_substring("abc", "xyz")==""
  assert longest_common_substring("", "test")==""
output: def longest_common_substring(s1, s2):
      m, n = len(s1), len(s2)
      max_len = 0
      end_index = 0
      dp = [[0] * (n + 1) for _ in range(m + 1)]
      
      for i in range(1, m + 1):
          for j in range(1, n + 1):
              if s1[i - 1] == s2[j - 1]:
                  dp[i][j] = dp[i - 1][j - 1] + 1
                  if dp[i][j] > max_len:
                      max_len = dp[i][j]
                      end_index = i
      
      return s1[end_index - max_len:end_index]