#include<bits/stdc++.h>
#define fi first
#define se second
#define ll long long
using namespace std;
typedef pair<ll, ll> ii;
const ll N = 1e3 + 5;
const ll MOD = 2004010501;
const ll inf = 1e18;
ll n, m, a[N][N], pos[N][N], f[N], ans;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>m;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) cin>>a[i][j];
}
// Moi so xuat hien dung 1 lan trong 1 day
// Gia su day con chung dai nhat la c1, c2,..., ck
// => No cung la day con cua m day
// => vi tri c1 < vi tri c2 < .. < vi tri ck trong ca m day
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) pos[i][a[i][j]] = j;
}
// f[i] : do dai day con chung dai nhat xet tu ket thuc tai i cua day 1
for (int i = 1; i <= n; i++) {
f[i] = 1;
for (int j = 1; j < i; j++) {
// f[j] cap nhat cho f[i] neu vi tri a[j] nho hon a[i] o ca m day
bool ok = true;
for (int k = 2; k <= m; k++) {
if (pos[k][a[1][j]] > pos[k][a[1][i]]) {
ok = false;
break;
}
}
if (ok) f[i] = max(f[i], f[j] + 1);
}
ans = max(ans, f[i]);
}
cout<<ans;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGxsIGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHBhaXI8bGwsIGxsPiBpaTsKY29uc3QgbGwgTiA9IDFlMyArIDU7CmNvbnN0IGxsIE1PRCA9IDIwMDQwMTA1MDE7CmNvbnN0IGxsIGluZiA9IDFlMTg7CmxsIG4sIG0sIGFbTl1bTl0sIHBvc1tOXVtOXSwgZltOXSwgYW5zOwppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGNpbj4+bj4+bTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBuOyAgaisrKSBjaW4+PmFbaV1bal07CiAgICB9CgogICAgLy8gTW9pIHNvIHh1YXQgaGllbiBkdW5nIDEgbGFuIHRyb25nIDEgZGF5CiAgICAvLyBHaWEgc3UgZGF5IGNvbiBjaHVuZyBkYWkgbmhhdCBsYSBjMSwgYzIsLi4uLCBjawogICAgLy8gPT4gTm8gY3VuZyBsYSBkYXkgY29uIGN1YSBtIGRheQogICAgLy8gPT4gdmkgdHJpIGMxIDwgdmkgdHJpIGMyIDwgLi4gPCB2aSB0cmkgY2sgdHJvbmcgY2EgbSBkYXkKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBuOyBqKyspIHBvc1tpXVthW2ldW2pdXSA9IGo7CiAgICB9CgogICAgLy8gZltpXSA6IGRvIGRhaSBkYXkgY29uIGNodW5nIGRhaSBuaGF0IHhldCB0dSBrZXQgdGh1YyB0YWkgaSBjdWEgZGF5IDEKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZbaV0gPSAxOwogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgaTsgaisrKSB7CiAgICAgICAgICAgIC8vIGZbal0gY2FwIG5oYXQgY2hvIGZbaV0gbmV1IHZpIHRyaSBhW2pdIG5obyBob24gYVtpXSBvIGNhIG0gZGF5CgogICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgICAgZm9yIChpbnQgayA9IDI7IGsgPD0gbTsgaysrKSB7CiAgICAgICAgICAgICAgICBpZiAocG9zW2tdW2FbMV1bal1dID4gcG9zW2tdW2FbMV1baV1dKSB7CiAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKG9rKSBmW2ldID0gbWF4KGZbaV0sIGZbal0gKyAxKTsKICAgICAgICB9CgogICAgICAgIGFucyA9IG1heChhbnMsIGZbaV0pOwogICAgfQoKICAgIGNvdXQ8PGFuczsKfQo=