1class Solution {2 public int minDistance(String word1, String word2) {3 return dfs(word1, word2, 0, 0);4 }5
6 private int dfs(String word1, String word2, int i, int j) {7 if (i == word1.length()) return word2.length() - j;8 if (j == word2.length()) return word1.length() - i;9 10 if (word1.charAt(i) == word2.charAt(j)) {11 return dfs(word1, word2, i + 1, j + 1);12 }13 14 int insert = dfs(word1, word2, i, j + 1);15 int delete = dfs(word1, word2, i + 1, j);16 int replace = dfs(word1, word2, i + 1, j + 1);17 return 1 + Math.min(replace, Math.min(insert, delete));18 }19}