/*
TASK: MATRIX
LANG: C
*/

#include<stdio.h>
#include<stdlib.h>
 
 int sortf(const void *a, const void *b)
  {
   return *(int*)a-*(int*)b;
  }

int main()
{
    int i,j,n,m,br=0,a[100][1000]={0},b[1001]={0},k,por=1,f[1001]={0},max,x,pol[1001]={0};
    
    
    scanf("%d %d",&n,&m);
    
    for(i=0;i<n;i++)
     {
      for(j=0;j<m;j++)
       {
        scanf("%d",&a[i][j]);
       }
       qsort(a[i],m,sizeof(int),sortf);
     }  
    
    for(i=0;i<n;i++)
     { if(a[i][0]==0) continue;
       b[i]=por;
      for(j=i+1;j<n;j++)
       {
        if(!a[j][0]) continue;
        k=0; br=0;
        while(a[i][k]==a[j][k] && a[i][k]>0) { br++; k++; }
        if(br==m) { b[j]=por; a[j][0]=0; }
       }              
      a[i][0]=0; por++;
     }
     
     k=0; max=0; br=0;
   for(i=0;i<n;i++)
    {
     x=b[i]; 
     f[x]++; br++; pol[k]=x; k++;
     if(f[x]>1) {
                 if(br>max) { max=br; br=1; }
                 for(j=0;j<=k;j++) { f[pol[j]]=0; }
                }                  
    
    }  
     
     
    printf("%d",max); 
     
    return 0;
}
