input: Write a function that takes two strings as arguments and returns the longest common substring between them.
  
  def longest_substring(str_1, str_2):
      len_1 = len(str_1)
      len_2 = len(str_2)
      longest_substring = ''
      match_len = 0
      matrix = [[0] * (len_2 + 1) for _ in range(len_1 + 1)]
      for i in range(1, len_1 + 1):
          for j in range(1, len_2 + 1):
              if str_1[i - 1] == str_2[j - 1]:
                  matrix[i][j] = matrix[i - 1][j - 1] + 1
                  if matrix[i][j] > match_len:
                      match_len = matrix[i][j]
                      longest_substring = str_1[i - match_len:i]
      return longest_substring
  
  assert longest_substring("abcdabcdabde", "defabcdabcd") == "abcdabcd"
  assert longest_substring("abcdefg", "cdefghi") == "cdefg"
  assert longest_substring("test", "notrelevant") == ""
  assert longest_substring("", "someString") == ""
  assert longest_substring("sameString", "sameString") == "sameString"
output: def longest_substring(str_1, str_2):
      len_1 = len(str_1)
      len_2 = len(str_2)
      longest_substring = ''
      match_len = 0
      matrix = [[0] * (len_2 + 1) for _ in range(len_1 + 1)]
      for i in range(1, len_1 + 1):
          for j in range(1, len_2 + 1):
              if str_1[i - 1] == str_2[j - 1]:
                  matrix[i][j] = matrix[i - 1][j - 1] + 1
                  if matrix[i][j] > match_len:
                      match_len = matrix[i][j]
                      longest_substring = str_1[i - match_len:i]
      return longest_substring