#include #define rep(i, z, n) for(int i = z; i < n; i++) #define all(v) v.begin(), v.end() typedef long long ll; const int INF = 1<<29; using namespace std; int main(){ int a,b; cin >> a >> b; string S, T; cin >> S >> T; vector> dp(S.size() + 1, vector(T.size() + 1, 0)); rep(i, 0, S.size() + 1) dp[i][0] = i; rep(i, 1, T.size() + 1) dp[0][i] = i; rep(i, 0, S.size()){ rep(j, 0, T.size()){ if (S[i] != T[j]) { dp[i+1][j+1] = min(min(dp[i+1][j],dp[i][j+1]), dp[i][j]) + 1; //cout << dp[i+1][j+1] << endl; } else dp[i+1][j+1] = dp[i][j]; } } cout << dp[S.size()][T.size()] << endl; }