#include<bits/stdc++.h>
using namespace std;
int n, m;
int LCS(char A[], char B[], int i, int j)
{
if(i == n || j == m)
{
return 0;
}
else if(A[i] == B[j])
{
return 1 + LCS(A, B, i+1, j+1);
}
else
{
return max(LCS(A, B, i, j+1), LCS(A, B, i+1, j));
}
}
int main()
{
cin>>n>>m;
char A[n], B[m];
cin>>A>>B;
int ans = LCS(A, B, 0, 0);
cout<<ans<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sIG07CgppbnQgTENTKGNoYXIgQVtdLCBjaGFyIEJbXSwgaW50IGksIGludCBqKQp7CiAgICBpZihpID09IG4gfHwgaiA9PSBtKQogICAgewogICAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxzZSBpZihBW2ldID09IEJbal0pCiAgICB7CiAgICAgICAgcmV0dXJuIDEgKyBMQ1MoQSwgQiwgaSsxLCBqKzEpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHJldHVybiBtYXgoTENTKEEsIEIsIGksIGorMSksIExDUyhBLCBCLCBpKzEsIGopKTsKICAgIH0KCn0KCmludCBtYWluKCkKewogICAgY2luPj5uPj5tOwogICAgY2hhciBBW25dLCBCW21dOwogICAgY2luPj5BPj5COwoKICAgIGludCBhbnMgPSBMQ1MoQSwgQiwgMCwgMCk7CgogICAgY291dDw8YW5zPDxlbmRsOwoKfQo=