#include #include #include #include using namespace std; int n, m; string S, T; int dp[1010][1010]; int choose(int s_now, int t_now){ if(dp[s_now][t_now] != -1){ return dp[s_now][t_now]; }else if(s_now == n){ return dp[s_now][t_now] = m - t_now; }else if(t_now == m){ return dp[s_now][t_now] = n - s_now; }else if(S[s_now] == T[t_now]){ return dp[s_now][t_now] = choose(s_now + 1, t_now + 1); }else{ return dp[s_now][t_now] = min({choose(s_now, t_now + 1) + 1, choose(s_now + 1, t_now) + 1, choose(s_now + 1, t_now + 1) + 1}); } } int main(){ cin >> n >> m >> S >> T; memset(dp, -1, sizeof(dp)); cout << choose(0, 0) << endl; }