/*
TASK:matrix
LANG:c
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int sort_function(const void *a,const void *b)
{
return( strcmp((char *)a,(char *)b) );
}

int main()
{

int i,j,M,N,k,p;
int a[1010][1010],ed[1010],max=0;
scanf("%d%d",&N,&M);
for (i=0;i<N;i++)
for(j=0;j<M;j++)
	scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
		qsort((int *)a[i], M, sizeof(a[0][0]), sort_function);
for(i=0;i<N;i++)
	ed[i]=i;
for(i=0;i<N-1;i++)
	for(j=i+1;j<N;j++)
		{for(k=0;k<M;k++)
			if(a[i][k]!=a[j][k])break;
		if(k==M)ed[j]=ed[i];
		}
for(i=2;i<=N;i++)
	for(j=0;j<=N-i;j++)
		{
		for(k=j;k<j+i-1;k++)
			{
			for(p=k+1;p<j+i;p++)
				if(ed[k]==ed[p])break;
			if(p!=j+i)break;
			}
		if(k==j+i-1)if(i>max)max=i;
		}
printf("%d\n",max);
return 0;
}
