#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int LevenshteinDist(const string& s, const string& t) { int n = s.size(); int m = t.size(); vector > minCost(n+2, vector(m+2, INT_MAX)); minCost[0][0] = 0; for(int i=0; i<=n; ++i){ for(int j=0; j<=m; ++j){ minCost[i+1][j] = min(minCost[i+1][j], minCost[i][j] + 1); minCost[i][j+1] = min(minCost[i][j+1], minCost[i][j] + 1); if(i < n && j < m && s[i] == t[j]) minCost[i+1][j+1] = min(minCost[i+1][j+1], minCost[i][j]); else minCost[i+1][j+1] = min(minCost[i+1][j+1], minCost[i][j] + 1); } } return minCost[n][m]; } int main() { int n, m; string s, t; cin >> n >> m >> s >> t; cout << LevenshteinDist(s, t) << endl; return 0; }