type
arr=record
x,y,next:Longint;
end;
var
e:array[1..10000]of arr;
link,ls:array[1..10000]of longint;
v:array[1..10000]of boolean;
n:longint;
functionfind(x:longint):boolean;
var
i,k:longint;
begin
find:=true;
i:=ls[x];
while i>0dobeginifnot v[e[i].y] thenbegin
k:=link[e[i].y];
link[e[i].y]:=e[i].x;
v[e[i].y]:=true;
if (k=0)or find(k) thenexit;
link[e[i].y]:=k;
end;
i:=e[i].next;
end;
find:=false;
end;
proceduremain;var
i,ans:longint;
begin
ans:=0;
for i:=1to n dobegin
fillchar(v,sizeof(v),false);
if find(i) then inc(ans);
end;
writeln(ans);
end;
procedureinit;var
i,m,x,y:longint;
begin
readln(n,m);
readln(m);
for i:=1to m dobegin
readln(x,y);
e[i].x:=x;
e[i].y:=y;
e[i].next:=ls[x];
ls[x]:=i;
end;
end;
begin
init;
main;
end.