//最长公共子序列
include[HTML_REMOVED]
using namespace std;
const int N = 1e3 + 17;
int n = 0, m = 0;
string a, b;
int ans[N][N];
void SHY()
{
ios :: sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
cin >> a >> b;
}
void dp()
{
for(int i = 1; i <= n; i )
for(int j = 1; j <= m; j )
{
ans[i][j] = max(ans[i][j - 1], ans[i - 1][j]);
if(a[i - 1] == b[j - 1])
ans[i][j] = max(ans[i][j], ans[i - 1][j - 1] + 1);
}
}
void SC()
{
cout << ans[n][m];
}
int main()
{
SHY();
dp();
SC();
return 0;
}
/
4 5
acbd
abedc
/
//3