#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
char s1[N], s2[N];
int dp[N][N];
int solve(int p1, int p2) {
if(p1 < 0) return p2;
if(p2 < 0) return p1;
if(dp[p1][p2] < 1e9) return dp[p1][p2];
if(s1[p1] == s2[p2]) dp[p1][p2] = min(dp[p1][p2], solve(p1 - 1, p2 - 1));
else dp[p1][p2] = min(dp[p1][p2], solve(p1 - 1, p2 - 1) + 1);
dp[p1][p2] = min(dp[p1][p2], min(solve(p1 - 1, p2) + 1, solve(p1, p2 - 1) + 1));
return dp[p1][p2];
}
int main() {
memset(dp, 0x3f, sizeof dp);
scanf(" %s %s", s1, s2);
printf("%d\n", 1 + solve(strlen(s1), strlen(s2)));
return 0;
}
难道是因为下标从0开始?