#include<iostream>
using namespace std;
//渐渐的我开始相信一句话,如果你的排名大于等于400那么你依然还在做水题。最近让我水的都开始拉稀了……
//以后要注意细节,好多代码错了以后总是改的不完全,有些地方忘记改了,要写好注释
int a[110][110];
int c[110][110];
int b[110];
int judge(int k,int p)//判断是否有相同的集合
{
int i;
for(i=0;i<101;i++)
{
if(a[k][i]==c[p][i])
continue;
else
break;
}
if(i==101)
{
return 1;
}
return 0;
}
int main()
{
int p,t,i,j;
scanf("%d%d",&p,&t);
int m,n;
memset(a,0,sizeof(a));
while(scanf("%d%d",&m,&n)!=EOF)
{
if(!a[m][n])
a[m][n]=1;
}
memset(b,0,sizeof(b));
int cnt=1,num=1;
for(i=0;i<101;i++)
c[1][i]=a[1][i];
for(i=1;i<=p;i++)
{
for(j=1;j<=num;j++)
{
if(judge(i,j))
break;
}
if(j==num+1)
{
num++;
cnt++;
for(j=0;j<101;j++)
c[num][j]=a[i][j];
}
}
printf("%d/n",cnt);
return 0;
}