/*
TASK:matrix
LANG:C++
*/
#include <iostream>
using namespace std;
int n,m,matrix[1001][1001];
int used[1001][10001];
bool same[1001][1001];
int en[1001][1001];
int main()
{

    cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
                en[i][0]=1;
                en[i][1]=i;
        }
    for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                    cin>>matrix[i][j];
                    used[i][matrix[i][j]]++;
            }
            
    for(int i=1;i<=n;i++)
            for(int j=i+1;j<=n;j++)
            {
                    bool flag=0;
                    for(int k=1;k<=m;k++)
                            if(used[j][matrix[i][k]]!=used[i][matrix[i][k]]) flag=1;
                    if(!flag)
                             same[i][j]=same[j][i]=1;
                    
            }
    
    for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                    if(!same[i][j] && i!=j)
                    {
                         bool bla=0;
                         for(int z=1;z<=en[i][0];z++)
                                 if(same[en[i][z]][j]) bla=1;
                         if(!bla)
                         {
                                 en[i][0]++;
                                 en[i][en[i][0]]=j;
                         }
                    }
                    
            int maX=-1;  
            for(int i=1;i<=n;i++)
                    if(maX<en[i][0]) maX=en[i][0];
                              
            cout<<maX<<endl;
 //          system("PAUSE");
            return 0;
}
