1 #include <bits/stdc++.h>
2 using namespace std;
3 const int inf = 0x3f3f3f3f;
4 const int MAX = 1000+10;
5 int a[MAX],x;
6 int dp[MAX];
7 int L[10][MAX];
8 int main() {
9 int n,k;
10 while(scanf("%d %d",&n,&k)==2) {
11 for(int i=1;i<=n;i++) {
12 scanf("%d",&a[i]);
13 }
14 for(int i=1;i<k;i++) {
15 for(int j=1;j<=n;j++) {
16 scanf("%d",&x);
17 L[i][x]=j;
18 }
19 }
20 memset(dp,-1,sizeof(dp));
21 bool flag ;
22 for(int i=1;i<=n;i++) {
23 dp[i]=1;
24 for(int j=1;j<i;j++) {
25 flag=true;
26 for(int m=1;m<k;m++) {
27 if(L[m][a[i]]<L[m][a[j]]) flag = false;
28 }
29 if(flag) dp[i]=max(dp[i],dp[j]+1);
30 }
31 }
32 int ans=-inf;
33 for(int i=1;i<=n;i++) ans=max(ans,dp[i]);
34 printf("%d\n",ans);
35 }
36 return 0;