/*
TASK:Matrix
LANG:C++
*/
#include <iostream>

using namespace std;
int mtr[1000][1000];
int maxbr=0;
bool check(int,int,int);
void search(int,int);
int main()
{
    int n;
    cin>>n;
    int m;
    cin>>m;
    
    for (int i=0;i<n;i++)
     for (int j=0;j<m;j++)
      cin>>mtr[i][j];
      
   for (int i=0;i<m-1;i++)
    search(i,m);
    
    
  cout<<maxbr;
  system("pause");  
    
}
      
bool check(int k,int l,int m)
{   
    int usedk[1000],usedl[1000];
    for (int i=0;i<m;i++)
    {
        usedk[i]=0;
        usedl[i]=0;
    }
    
    for (int i=0;i<m;i++)
     for (int j=0;j<m;j++)
       if (mtr[k][i]==mtr[l][j] && !usedl[j])
       {
             usedk[i]=1;
             usedl[j]=1;
             j=m;
       }
    
    for (int i=0;i<m;i++)
     if (!usedk[i]) return false;
    
    return true;
}

void search(int i,int m)
{
     int br=1;
     for (int k=i+1;k<m;k++)
      if(!check(i,k,m)) br++;
     if (maxbr<br) maxbr=br;
}
     
