/*
_.-- ,.--.
.' .' /
@ |'..--------._
/ \._/ '.
/ .-.- \
( / \ \
\\ '. | #
\\ \ -. /
:\ | )._____.' \
" | / \ | \ )
| |./' :__ \.-'
'--'
*/
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
#define file "b"
#define pb push_back
#define pll pair<ll, ll>
using namespace std;
const ll maxn = 1e6 + 3, maxm = 3e3+2, maxk = 1e4 + 2;
const ll INF = 1e18 + 1;
ll n, m, t = 0, ans = 0,l, r, cnt = 0, k = 0, cur;
bool cn = false;
ll A[maxn], B[maxn];
ll dx[] = {0, 0, -1, 1};
ll dy[] = {1, -1, 0, 0};
vector<pll> v[maxn];
pll p[maxn];
bool _cmp(pll x, pll y){
return x.second > y.second;
}
void mofile(){
if(fopen(file".inp", "r")){
freopen(file".inp", "r", stdin);
freopen(file".out", "w", stdout);
}
}
void faster(){
ios::sync_with_stdio(0);
cin.tie(nullptr); cout.tie(nullptr);
}
/*-------------------------------------*/
struct haitay2vumombulozem{
ll maxx, minn, len, xuong;
}dp[maxm][maxm];
void solve(){
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> A[i];
for(int i = 1; i <= m; i++) cin >> B[i];
for(int i = 0; i <= n; i++){
for(int j = 0; j <= m; j++){
dp[i][j].minn = -INF;
dp[i][j].maxx = INF;
dp[i][j].len = dp[i][j].xuong = 0;
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(A[i]==B[j]){
if(dp[i-1][j-1].minn < A[i]){
dp[i][j].maxx = A[i];
dp[i][j].len = dp[i-1][j-1].xuong + 1;
}
if(dp[i-1][j-1].maxx > A[i]){
dp[i][j].minn = A[i];
dp[i][j].xuong = dp[i-1][j-1].len + 1;
}
}
else{
if(dp[i-1][j].len > dp[i][j-1].len){
dp[i][j].len = dp[i-1][j].len;
dp[i][j].maxx = dp[i-1][j].maxx;
}
else if(dp[i-1][j].len < dp[i][j-1].len){
dp[i][j].len = dp[i][j-1].len;
dp[i][j].maxx = dp[i][j-1].maxx;
}
else{
dp[i][j].len = dp[i-1][j].len;
dp[i][j].maxx = max(dp[i][j-1].maxx, dp[i-1][j].maxx);
}
//xuong
if(dp[i-1][j].xuong > dp[i][j-1].xuong){
dp[i][j].xuong = dp[i-1][j].xuong;
dp[i][j].minn = dp[i-1][j].minn;
}
else if(dp[i-1][j].xuong < dp[i][j-1].xuong){
dp[i][j].xuong = dp[i][j-1].xuong;
dp[i][j].minn = dp[i][j-1].minn;
}
else{
dp[i][j].xuong = dp[i-1][j].xuong;
dp[i][j].minn = min(dp[i][j-1].minn, dp[i-1][j].minn);
}
}
}
}
cout << max(dp[n][m].len, dp[n][m].xuong);
}
/*------------------------------------------*/
main(){
faster();
mofile();
ll tt = 1;
//cin >> tt;
while(tt--)
solve();
}
LyoKICAgICAgICBfLi0tICwuLS0uCiAgICAgIC4nICAgLicgICAgIC8KICAgICAgIEAgICAgICAgfCcuLi0tLS0tLS0tLl8KICAgICAvICAgICAgXC5fLyAgICAgICAgICAgICAgJy4KICAgIC8gIC4tLi0gICAgICAgICAgICAgICAgICAgICBcCiAgICggIC8gICAgXCAgICAgICAgICAgICAgICAgICAgIFwKICAgXFwgICAgICAnLiAgICAgICAgICAgICAgICAgIHwgIwogICAgXFwgICAgICAgXCAgIC0uICAgICAgICAgICAvCiAgICAgOlwgICAgICAgfCAgICApLl9fX19fLicgICBcCiAgICAgICIgICAgICAgfCAgIC8gIFwgIHwgIFwgICAgKQogICAgICAgICAgICAgIHwgICB8Li8nICA6X18gXC4tJwogICAgICAgICAgICAgICctLScKKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgZmlsZSAiYiIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwbGwgcGFpcjxsbCwgbGw+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxsIG1heG4gPSAxZTYgKyAzLCBtYXhtID0gM2UzKzIsIG1heGsgPSAxZTQgKyAyOwpjb25zdCBsbCBJTkYgPSAxZTE4ICsgMTsKbGwgbiwgbSwgdCA9IDAsIGFucyA9IDAsbCwgciwgY250ID0gMCwgayA9IDAsIGN1cjsKYm9vbCBjbiA9IGZhbHNlOwpsbCBBW21heG5dLCBCW21heG5dOwpsbCBkeFtdID0gezAsIDAsIC0xLCAxfTsKbGwgZHlbXSA9IHsxLCAtMSwgMCwgMH07CnZlY3RvcjxwbGw+IHZbbWF4bl07CnBsbCBwW21heG5dOwpib29sIF9jbXAocGxsIHgsIHBsbCB5KXsKICAgIHJldHVybiB4LnNlY29uZCA+IHkuc2Vjb25kOwp9CnZvaWQgbW9maWxlKCl7CiBpZihmb3BlbihmaWxlIi5pbnAiLCAiciIpKXsKICAgICBmcmVvcGVuKGZpbGUiLmlucCIsICJyIiwgc3RkaW4pOwpmcmVvcGVuKGZpbGUiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKIH0KfQp2b2lkIGZhc3RlcigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpzdHJ1Y3QgaGFpdGF5MnZ1bW9tYnVsb3plbXsKICAgIGxsIG1heHgsIG1pbm4sIGxlbiwgeHVvbmc7Cn1kcFttYXhtXVttYXhtXTsKdm9pZCBzb2x2ZSgpewogICAgY2luID4+IG4gPj4gbTsKICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBBW2ldOwogICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgY2luID4+IEJbaV07CiAgIGZvcihpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKXsKICAgIGZvcihpbnQgaiA9IDA7IGogPD0gbTsgaisrKXsKICAgICAgICBkcFtpXVtqXS5taW5uID0gLUlORjsKICAgICAgICBkcFtpXVtqXS5tYXh4ID0gSU5GOwogICAgICAgIGRwW2ldW2pdLmxlbiA9IGRwW2ldW2pdLnh1b25nID0gMDsKICAgIH0KICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbTsgaisrKXsKICAgICAgICAgICAgaWYoQVtpXT09QltqXSl7CiAgICAgICAgICAgICAgICBpZihkcFtpLTFdW2otMV0ubWlubiA8IEFbaV0pewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLm1heHggPSBBW2ldOwogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLmxlbiA9IGRwW2ktMV1bai0xXS54dW9uZyArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihkcFtpLTFdW2otMV0ubWF4eCA+IEFbaV0pewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLm1pbm4gPSBBW2ldOwogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLnh1b25nID0gZHBbaS0xXVtqLTFdLmxlbiArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGlmKGRwW2ktMV1bal0ubGVuID4gZHBbaV1bai0xXS5sZW4pewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLmxlbiA9IGRwW2ktMV1bal0ubGVuOwogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLm1heHggPSBkcFtpLTFdW2pdLm1heHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKGRwW2ktMV1bal0ubGVuIDwgZHBbaV1bai0xXS5sZW4pewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLmxlbiA9IGRwW2ldW2otMV0ubGVuOwogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLm1heHggPSBkcFtpXVtqLTFdLm1heHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLmxlbiA9IGRwW2ktMV1bal0ubGVuOwogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLm1heHggPSBtYXgoZHBbaV1bai0xXS5tYXh4LCBkcFtpLTFdW2pdLm1heHgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy94dW9uZwogICAgICAgICAgICAgICAgaWYoZHBbaS0xXVtqXS54dW9uZyA+IGRwW2ldW2otMV0ueHVvbmcpewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLnh1b25nID0gZHBbaS0xXVtqXS54dW9uZzsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXS5taW5uID0gZHBbaS0xXVtqXS5taW5uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZihkcFtpLTFdW2pdLnh1b25nIDwgZHBbaV1bai0xXS54dW9uZyl7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0ueHVvbmcgPSBkcFtpXVtqLTFdLnh1b25nOwogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLm1pbm4gPSBkcFtpXVtqLTFdLm1pbm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLnh1b25nID0gZHBbaS0xXVtqXS54dW9uZzsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXS5taW5uID0gbWluKGRwW2ldW2otMV0ubWlubiwgZHBbaS0xXVtqXS5taW5uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgbWF4KGRwW25dW21dLmxlbiwgZHBbbl1bbV0ueHVvbmcpOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KbWFpbigpewogICAgZmFzdGVyKCk7CiAgICBtb2ZpbGUoKTsKICAgIGxsIHR0ID0gMTsKICAgIC8vY2luID4+IHR0OwogICAgd2hpbGUodHQtLSkKICAgIHNvbHZlKCk7Cn0K