input: Write a function to compute the edit distance between two strings in Python using dynamic programming. The function should take two strings and their lengths as input and return the minimum number of edit operations (insertion, deletion, or substitution) required to transform the first string into the second string. If one or both of the strings are empty, the function should return the length of the non-empty string if one exists, or 0 if both strings are empty.
  
  def editDistance(string1, string2, m, n):
      dp = [[0 for x in range(n+1)] for x in range(m+1)]
      for i in range(m+1): 
          dp[i][0] = i 
      for j in range(n+1): 
          dp[0][j] = j
      for i in range(1, m+1): 
          for j in range(1, n+1): 
              if string1[i-1] == string2[j-1]: 
                  dp[i][j] = dp[i-1][j-1] 
              else: 
                  dp[i][j] = 1 + min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) 
      return dp[m][n]
  
  assert editDistance("kitten", "sitting", len("kitten"), len("sitting")) == 3
  assert editDistance("intention", "execution", len("intention"), len("execution")) == 5
  assert editDistance("", "a", len(""), len("a")) == 1
  assert editDistance("abc", "", len("abc"), len("")) == 3
  assert editDistance("", "", len(""), len("")) == 0
output: def editDistance(string1, string2, m, n):
      dp = [[0 for x in range(n+1)] for x in range(m+1)]
      for i in range(m+1): 
          dp[i][0] = i 
      for j in range(n+1): 
          dp[0][j] = j
      for i in range(1, m+1): 
          for j in range(1, n+1): 
              if string1[i-1] == string2[j-1]: 
                  dp[i][j] = dp[i-1][j-1] 
              else: 
                  dp[i][j] = 1 + min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) 
      return dp[m][n]