#include <bits/stdc++.h>
#define C make_pair
#define ll long long
#define all(a) a.begin(),a.end()
#define name "task"
#define ln "\n"
using namespace std;
ll n,m;
void solve(){
cin>>n>>m;
ll a[m+3][n+9];
ll pos[m+3][n+9];
ll dp[n+9];
for(int i=1;i<=m;++i){
for(int j=1;j<=n;++j){
cin>>a[i][j];
pos[i][a[i][j]]=j;
}
}
for(int i=1;i<=n;++i)
dp[i]=1;
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j){
bool check=true;
for(int x=1;x<=m;++x){
if(pos[x][a[1][i]]>pos[x][a[1][j]]){
check=false;
break;
}
}
if(check==true)
dp[j]=max(dp[i]+1,dp[j]);
}
}
ll res=0;
for(int i=1;i<=n;++i)
res=max(res,dp[i]);
cout<<res;
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if(fopen(name".inp","r")){
freopen(name".inp","r",stdin);
freopen(name".out","w",stdout);
}
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgQyBtYWtlX3BhaXIKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBuYW1lICJ0YXNrIgojZGVmaW5lIGxuICJcbiIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbGwgbixtOwp2b2lkIHNvbHZlKCl7CgljaW4+Pm4+Pm07CglsbCBhW20rM11bbis5XTsKCWxsIHBvc1ttKzNdW24rOV07CglsbCBkcFtuKzldOwoJZm9yKGludCBpPTE7aTw9bTsrK2kpewoJCWZvcihpbnQgaj0xO2o8PW47KytqKXsKCQkJY2luPj5hW2ldW2pdOwoJCQlwb3NbaV1bYVtpXVtqXV09ajsKCQl9Cgl9Cglmb3IoaW50IGk9MTtpPD1uOysraSkKCQlkcFtpXT0xOwoJZm9yKGludCBpPTE7aTw9bjsrK2kpewoJCWZvcihpbnQgaj1pKzE7ajw9bjsrK2opewoJCQlib29sIGNoZWNrPXRydWU7CgkJCWZvcihpbnQgeD0xO3g8PW07Kyt4KXsKCQkJCWlmKHBvc1t4XVthWzFdW2ldXT5wb3NbeF1bYVsxXVtqXV0pewoJCQkJCWNoZWNrPWZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCWlmKGNoZWNrPT10cnVlKQoJCQkJZHBbal09bWF4KGRwW2ldKzEsZHBbal0pOwoJCX0KCX0KCWxsIHJlcz0wOwoJZm9yKGludCBpPTE7aTw9bjsrK2kpCgkJcmVzPW1heChyZXMsZHBbaV0pOwoJY291dDw8cmVzOwp9CmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmKGZvcGVuKG5hbWUiLmlucCIsInIiKSl7CiAgICAgICAgZnJlb3BlbihuYW1lIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3BlbihuYW1lIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgc29sdmUoKTsKfQo=