#include <bits/stdc++.h>
using namespace std;
const long long N = 4 * 1e6 + 10;
bool col2(pair<long long, long long> p1, pair<long long, long long> p2) {
  return p1.second < p2.second;
}
long long power(long long x, long long y) {
  long long temp;
  if (y == 0) return 1;
  temp = power(x, y / 2);
  if (y % 2 == 0)
    return temp * temp;
  else
    return x * temp * temp;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  ;
  long long n, m;
  cin >> n >> m;
  string a, b;
  cin >> a >> b;
  long long dp[n + 1][m + 1];
  memset(dp, 0, sizeof(dp));
  for (int i = 1; i < n + 1; i++) {
    for (int j = 1; j < m + 1; j++) {
      if (a[i - 1] == b[j - 1]) {
        dp[i][j] = max(dp[i][j], 2 + dp[i - 1][j - 1]);
      } else {
        dp[i][j] = max(dp[i][j], max(dp[i - 1][j], dp[i][j - 1]) - 1);
      }
    }
  }
  long long mxm = 0;
  for (int i = 0; i < n + 1; i++)
    for (int j = 0; j < m + 1; j++) mxm = max(mxm, dp[i][j]);
  cout << mxm << "\n";
}
