#include #include #include #include #include //#include //using namespace atcoder; using namespace std; using i32 = int_fast32_t; using i64 = int_fast64_t; using usize = size_t; using u32 = uint_fast32_t; using u64 = uint_fast64_t; template using vec = vector; #define rep(i, n) for (i64 i = 0; i < (i64)(n); ++i) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() using P = pair; void solve(){ } int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); u64 n,m; cin >> n >> m; string s,t; cin >> s >> t; vec> dp(n + 1,vec(m + 1,1e18)); dp[0][0] = 0; rep(i,n + 1){ rep(j, m + 1){ if(i && j){ if(s[i - 1] == t[j - 1])dp[i][j] = min(dp[i - 1][j - 1],dp[i][j]); else dp[i][j] = min(dp[i - 1][j - 1] + 1 ,dp[i][j]); } if(i)dp[i][j] = min(dp[i - 1][j] + 1 ,dp[i][j]); if(j)dp[i][j] = min(dp[i][j - 1] + 1,dp[i][j]); } } cout << dp.back().back() << endl; }