class Solution {
public int minDistance(String word1, String word2) {
int len1 = word1.length();
int len2 = word2.length();
int[][] dp = new int[len1+1][len2+2];
for(int i = 0; i <=len1; i++){
dp[i][0] = i;
}
for(int j =0; j <=len2; j++){
dp[0][j] = j;
}
for(int i = 1; i <= len1; i++){
for(int j =1; j <=len2; j++){
if(word1.charAt(i-1) == word2.charAt(j-1)){
dp[i][j] = dp[i-1][j-1];
}else{
dp[i][j] = Math.min(dp[i][j-1] + 1, dp[i-1][j] + 1);
}
}
}
return dp[len1][len2];
}
}
class Solution {
public int minDistance(String word1, String word2) {
int len1 = word1.length();
int len2 = word2.length();
int[][] dp = new int[len1+1][len2+2];
for(int i = 0; i <=len1; i++){
dp[i][0] = i;
}
for(int j =0; j <=len2; j++){
dp[0][j] = j;
}
for(int i = 1; i <= len1; i++){
for(int j =1; j <=len2; j++){
if(word1.charAt(i-1) == word2.charAt(j-1)){
dp[i][j] = dp[i-1][j-1];
}else{
dp[i][j] = Math.min(dp[i][j-1] + 1, Math.min(dp[i-1][j] + 1, dp[i-1][j-1] + 1));
}
}
}
return dp[len1][len2];
}
}