#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i , a , b) for(int i = a ; i <= b; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define maxn 505
int a[maxn] , b[maxn] , dp[maxn][maxn][2] , pre[maxn][maxn][2];
int main(){
FAST;
int n , m;
cin >> n >> m;
FOR(i , 1 , n) cin >> a[i];
FOR(i ,1 , m) cin >> b[i];
// goi dp[i][j][k] la do dai day bap benh chung dai nhat khi xet a[1.. i] va b[1..j]
// ai > bj -> k = 1
// ai < bj -> k = 0
FOR(i , 1 , n){
FOR(j , 1 , m){
if(a[i] != b[j]) continue;
int best_greater = 1;
int best_less = 1;
// dp[i][j][0] = max(dp[i][j][0] , dp[i'][j'][1] + 1)
// dp[i][j][1] = max(dp[i][j][1] , dp[i'][j'][0] + 1)
// ta thay rang ta se xet i' < i va j' < j -> ta co dinh chieu i va opt j
// -> opt j bang prefix sum
// pre[i][j][0] , pre[i][j][1]
// pre[i][j][0] = max(pre[i][j - 1][0] , dp[i][j][0])
FOR(id , 1 , i - 1){
if(a[id] < a[i]){
int cand = pre[id][j - 1][0];
if(cand > 0) best_greater = max(best_greater , cand + 1);
}
else if(a[id] > a[i]){
int cand = pre[id][j - 1][1];
if(cand > 0) best_less = max(best_less , cand + 1);
}
}
dp[i][j][0] = best_less;
dp[i][j][1] = best_greater;
}
pre[i][0][0] = 0;
pre[i][0][1] = 0;
// sau khi build xong tung j cho hang i
FOR(j , 1 , m){
pre[i][j][0] = max(pre[i][j - 1][0] , dp[i][j][0]);
pre[i][j][1] = max(pre[i][j - 1][1] , dp[i][j][1]);
}
}
int ans = 0;
FOR(i , 1 , n){
FOR(j , 1 , m){
ans = max({ans , dp[i][j][0] , dp[i][j][1]});
}
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBGT1IoaSAsIGEgLCBiKSBmb3IoaW50IGkgPSBhIDsgaSA8PSBiOyBpKyspCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBtYXhuIDUwNQoKaW50IGFbbWF4bl0gLCBiW21heG5dICwgZHBbbWF4bl1bbWF4bl1bMl0gLCBwcmVbbWF4bl1bbWF4bl1bMl07CgppbnQgbWFpbigpewogICAgRkFTVDsKICAgIGludCBuICwgbTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBGT1IoaSAsIDEgLCBuKSBjaW4gPj4gYVtpXTsKICAgIEZPUihpICAsMSAsIG0pIGNpbiA+PiBiW2ldOwoKICAgIC8vIGdvaSBkcFtpXVtqXVtrXSBsYSBkbyBkYWkgZGF5IGJhcCBiZW5oIGNodW5nIGRhaSBuaGF0IGtoaSB4ZXQgYVsxLi4gaV0gdmEgYlsxLi5qXSAKICAgIC8vIGFpID4gYmogLT4gayA9IDEKICAgIC8vIGFpIDwgYmogLT4gayA9IDAKICAgIEZPUihpICwgMSAsIG4pewogICAgICAgIEZPUihqICwgMSAsIG0pewogICAgICAgICAgICBpZihhW2ldICE9IGJbal0pIGNvbnRpbnVlOwogICAgICAgICAgICBpbnQgYmVzdF9ncmVhdGVyID0gMTsKICAgICAgICAgICAgaW50IGJlc3RfbGVzcyA9IDE7CgogICAgICAgICAgICAvLyBkcFtpXVtqXVswXSA9IG1heChkcFtpXVtqXVswXSAsIGRwW2knXVtqJ11bMV0gKyAxKQogICAgICAgICAgICAvLyBkcFtpXVtqXVsxXSA9IG1heChkcFtpXVtqXVsxXSAsIGRwW2knXVtqJ11bMF0gKyAxKQogICAgICAgICAgICAvLyB0YSB0aGF5IHJhbmcgdGEgc2UgeGV0IGknIDwgaSB2YSBqJyA8IGogLT4gdGEgY28gZGluaCBjaGlldSBpIHZhIG9wdCBqCiAgICAgICAgICAgIC8vIC0+IG9wdCBqIGJhbmcgcHJlZml4IHN1bQogICAgICAgICAgICAvLyBwcmVbaV1bal1bMF0gLCBwcmVbaV1bal1bMV0KICAgICAgICAgICAgLy8gcHJlW2ldW2pdWzBdID0gbWF4KHByZVtpXVtqIC0gMV1bMF0gLCBkcFtpXVtqXVswXSkKICAgICAgICAgICAgCiAgICAgICAgICAgIEZPUihpZCAsIDEgLCBpIC0gMSl7CiAgICAgICAgICAgICAgICBpZihhW2lkXSA8IGFbaV0pewogICAgICAgICAgICAgICAgICAgIGludCBjYW5kID0gcHJlW2lkXVtqIC0gMV1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYoY2FuZCA+IDApIGJlc3RfZ3JlYXRlciA9IG1heChiZXN0X2dyZWF0ZXIgLCBjYW5kICsgMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZihhW2lkXSA+IGFbaV0pewogICAgICAgICAgICAgICAgICAgIGludCBjYW5kID0gcHJlW2lkXVtqIC0gMV1bMV07CiAgICAgICAgICAgICAgICAgICAgaWYoY2FuZCA+IDApIGJlc3RfbGVzcyA9IG1heChiZXN0X2xlc3MgLCBjYW5kICsgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZHBbaV1bal1bMF0gPSBiZXN0X2xlc3M7CiAgICAgICAgICAgIGRwW2ldW2pdWzFdID0gYmVzdF9ncmVhdGVyOwogICAgICAgIH0KCiAgICAgICAgcHJlW2ldWzBdWzBdID0gMDsKICAgICAgICBwcmVbaV1bMF1bMV0gPSAwOwogICAgICAgIC8vIHNhdSBraGkgYnVpbGQgeG9uZyB0dW5nIGogY2hvIGhhbmcgaQogICAgICAgIEZPUihqICwgMSAsIG0pewogICAgICAgICAgICBwcmVbaV1bal1bMF0gPSBtYXgocHJlW2ldW2ogLSAxXVswXSAsIGRwW2ldW2pdWzBdKTsKICAgICAgICAgICAgcHJlW2ldW2pdWzFdID0gbWF4KHByZVtpXVtqIC0gMV1bMV0gLCBkcFtpXVtqXVsxXSk7CiAgICAgICAgfQogICAgfQoKICAgIGludCBhbnMgPSAwOwogICAgRk9SKGkgLCAxICwgbil7CiAgICAgICAgRk9SKGogLCAxICwgbSl7CiAgICAgICAgICAgIGFucyA9IG1heCh7YW5zICwgZHBbaV1bal1bMF0gLCBkcFtpXVtqXVsxXX0pOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFuczsKfQ==