#include <stdio.h>
int arr[520][520]={},q=0,k=0,f,stack[520][520]={},varr[520][520]={},a,b,c,d,sum=0,count=0,bef[501]={};
visit(int i,int q)
{
int j=0;
if(arr[i][q]==1)
{
return 0;
}
varr[q][i]=1;
arr[i][q]=1;
for(j=1;j<=a;j++)
{
if(stack[q][j]==1)
{
visit(i,j);
}
}
}
void s(int i)
{
int j;
for(j=1;j<=a;j++)
{
if(stack[i][j]==1)
{
visit(i,j);
}
}
}
int main()
{
int i,j;
scanf("%d %d",&a,&b);
for(i=1;i<=b;i++)
{
scanf("%d %d",&c,&d);
stack[c][d]=1;
}
for(i=1;i<=a;i++)
{
s(i);
}
// for(i=1;i<=a;i++)
// {
// for(j=1;j<=a;j++)
// {
// printf("%d ",stack[i][j]);
// }
// printf("\n");
// }
// printf("\n");
//
// for(i=1;i<=a;i++)
// {
// for(j=1;j<=a;j++)
// {
// printf("%d ",varr[i][j]);
// }
// printf("\n");
// }
// printf("\n");
for(i=1;i<=a;i++)
{
for(j=1;j<=a;j++)
{
if(arr[i][j]==varr[i][j])
{
arr[i][j]=0;
}
if(arr[i][j]==stack[i][j])
{
arr[i][j]=0;
}
}
}
// for(i=1;i<=a;i++)
// {
// for(j=1;j<=a;j++)
// {
// printf("%d ",arr[i][j]);
// }
// printf("\n");
// }
for(i=1;i<=a;i++)
{
sum=0;
for(j=1;j<=a;j++)
{
sum=sum+stack[i][j]+varr[i][j]+arr[i][j];
}
if(sum==a-1)
{
count++;
}
}
printf("%d",count);
}