#include<stdio.h>
#define MAX_N 500+16
int map[MAX_N][MAX_N];
int visit[10000];
int match[10000];
int k,n;
int path(int start)
{
int i;
for(i=1;i<=n;i++)
{
if(map[start][i]&&!visit[i])
{
visit[i]=1;
if(match[i]==-1||path(match[i]))
{
match[i]=start;
return 1;
}
}
}
return 0;
}
int main(void)
{
int i,res,x,y;
scanf("%d%d",&n,&k);
memset(match,-1,sizeof(match));
memset(map,0,sizeof(map));
for(i=1;i<=k;i++)
{
scanf("%d%d",&x,&y);
map[x][y]=1;
}
res=0;
for(i=1;i<=n;i++)
{
memset(visit,0,sizeof(visit));
if(path(i))
res++;
}
printf("%d\n",res);
}