#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+1, j), LCS(A, B, i, j+1));
}
}
int main()
{
cin>>n>>m;
char A[n], B[m];
cin>>A>>B;
int ans = LCS(A, B, 0, 0);
cout<<ans<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sIG07CmludCBMQ1MoY2hhciBBW10sIGNoYXIgQltdLCBpbnQgaSwgaW50IGopCnsKICAgIGlmKGkgPT0gbiB8fCBqID09IG0pCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlIGlmKEFbaV0gPT0gQltqXSkKICAgIHsKICAgICAgICByZXR1cm4gMSArIExDUyhBLCBCLCBpKzEsIGorMSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcmV0dXJuIG1heChMQ1MoQSwgQiwgaSsxLCBqKSwgTENTKEEsIEIsIGksIGorMSkpOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGNpbj4+bj4+bTsKICAgIGNoYXIgQVtuXSwgQlttXTsKICAgIGNpbj4+QT4+QjsKCiAgICBpbnQgYW5zID0gTENTKEEsIEIsIDAsIDApOwoKICAgIGNvdXQ8PGFuczw8ZW5kbDsKCn0K