import java.util.*;

public class Solution {
    public int editDistance (String str1, String str2) {
        int n = str1.length() , m = str2.length();
        int[][] dp = new int[n+1][m+1];
        for(int i = 1; i <= n; i ++){
            dp[i][0] = i;
        }
        for(int j = 1; j <= m; j ++){
            dp[0][j] = j;
        }
        
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                int l = dp[i-1][j] + 1; // 删除
                int u = dp[i][j-1] + 1; // 插入
                int lu = dp[i-1][j-1]; // 修改
                if(str1.charAt(i-1) != str2.charAt(j-1)){
                    lu += 1;
                }
                dp[i][j] = Math.min(Math.min(l,u),lu);
            }
        }
        return dp[n][m];
    }
}