#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int minTimeToWrite(string S, string T) {
int n = S.size();
int m = T.size();
vector<vector<int>> dp(n + 1, vector<int>(m + 1, -1));
dp[0][0] = 0;
for (int i = 1; i <= n; ++i) {
dp[i][0] = i;
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (S[i - 1] == T[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = dp[i - 1][j] + 1;
for (int k = 1; k < i; ++k) {
if (S[k - 1] == T[j - 1]) {
dp[i][j] = min(dp[i][j], dp[k][j] + abs(k - i));
}
}
}
}
}
return dp[n][m];
}
int main() {
int n, m;
cin >> n >> m;
string S, T;
cin >> S >> T;
int result = minTimeToWrite(S, T);
cout << result << endl;
return 0;
}