#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n), b(m);
for (int i = 0; i < n; i++) cin >> a[i];
for (int j = 0; j < m; j++) cin >> b[j];
vector<int> dp(m, 0); // dp[j] = LCIS kết thúc tại b[j]
for (int i = 0; i < n; i++) {
int current_max = 0;
for (int j = 0; j < m; j++) {
if (a[i] == b[j]) {
dp[j] = max(dp[j], current_max + 1);
}
if (a[i] > b[j]) {
current_max = max(current_max, dp[j]);
}
}
}
cout << *max_element(dp.begin(), dp.end()) << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIHZlY3RvcjxpbnQ+IGEobiksIGIobSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgY2luID4+IGFbaV07CiAgICBmb3IgKGludCBqID0gMDsgaiA8IG07IGorKykgY2luID4+IGJbal07CgogICAgdmVjdG9yPGludD4gZHAobSwgMCk7IC8vIGRwW2pdID0gTENJUyBr4bq/dCB0aMO6YyB04bqhaSBiW2pdCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGludCBjdXJyZW50X21heCA9IDA7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFbaV0gPT0gYltqXSkgewogICAgICAgICAgICAgICAgZHBbal0gPSBtYXgoZHBbal0sIGN1cnJlbnRfbWF4ICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGFbaV0gPiBiW2pdKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50X21heCA9IG1heChjdXJyZW50X21heCwgZHBbal0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgKm1heF9lbGVtZW50KGRwLmJlZ2luKCksIGRwLmVuZCgpKSA8PCAiXG4iOwp9Cg==