input: Write a function to calculate the edit distance between two strings using dynamic programming. The function should take two strings as input and return the edit distance. If either of the strings is empty, the function should return the length of the non-empty string.
  assert edit_distance("kitten", "sitting")==3
  assert edit_distance("intention", "execution")==5
  assert edit_distance("horse", "ros")==3
  assert edit_distance("sunday", "saturday")==3
  assert edit_distance("", "a")==1
output: def edit_distance(str1, str2):
      if not str1:
          return len(str2)
      if not str2:
          return len(str1)
      
      m, n = len(str1), len(str2)
      dp = [[0] * (n + 1) for _ in range(m + 1)]
      
      for i in range(m + 1):
          for j in range(n + 1):
              if i == 0:
                  dp[i][j] = j
              elif j == 0:
                  dp[i][j] = i
              elif str1[i-1] == str2[j-1]:
                  dp[i][j] = dp[i-1][j-1]
              else:
                  dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])
      
      return dp[m][n]