#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N =1e3+10;
int dp[N][N];
char a[N],b[N];//用char 从1开始更方便一些(不用处理下标问题)
int main()
{
int lena;
int lenb;
cin>>lena>>lenb;
cin>>(a+1);
cin>>(b+1);
for(int i=1;i<=lena;i++)
for(int j=1;j<=lenb;j++)
{
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
if(a[i]==b[j]) dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
}
cout<<dp[lena][lenb]<<endl;
}