Link to this code:
https://cses.fi/paste/2409d2ad58018e5bc7c08a//* 777 */
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define FAST_IO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
const int MOD = 1e9 + 7;
int n, m;
int dp[5001][5001];
string a, b;
int rec(int i, int j) {
if (j == m) return n - i;
if (i == n) return m - j;
if (dp[i][j] != -1) return dp[i][j];
int ans = (a[i] != b[j]) + rec(i + 1, j + 1); // edit
ans = min(ans, 1 + rec(i + 1, j)); // remove
ans = min(ans, 1 + rec(i, j + 1)); // add
// cout << i << " " << j << " " << ans << endl;
return dp[i][j] = ans;
}
void solve() {
memset(dp, -1, sizeof(dp));
cin >> a >> b;
n = a.size();
m = b.size();
int res = rec(0, 0);
cout << res;
}
int32_t main() {
FAST_IO
solve();
}