#include using namespace std; const int N = 2010; int f[N][N]; char a[N], b[N]; int al, bl; /* 测试用例: abcd ebde 答案:3 */ int dfs(int i, int j) { if (i == 0) return j; if (j == 0) return i; if (~f[i][j]) return f[i][j]; //增加、删除 f[i][j] = min(dfs(i - 1, j) + 1, dfs(i, j - 1) + 1); //修改 if (a[i] == b[j]) return f[i][j] = min(f[i][j], dfs(i - 1, j - 1)); else return f[i][j] = min(f[i][j], dfs(i - 1, j - 1) + 1); } int main() { memset(f, -1, sizeof f); cin >> a + 1 >> b + 1; al = strlen(a + 1), bl = strlen(b + 1); printf("%d\n", dfs(al, bl)); return 0; }