#include <bits/stdc++.h>
using namespace std;
const int N=1e5+1;
vector<int> e[N];
int tim[N],low[N],t=1,sum=0;
bool book[1001];
stack<int> s;
void dfs(int u)
{
tim[u]=low[u]=t++;
s.push(u);
book[u]=1;
for(int i=0;i<e[u].size();i++)
{
if(!tim[e[u][i]])
{
dfs(e[u][i]);
low[u]=min(tim[e[u][i]],low[u]);
}else if(book[u])
{
low[u]=min(tim[e[u][i]],low[u]);
}
}
if(tim[u]==low[u])
{
int cnt=0;
while(s.top()!=u)
{
cnt++;
book[s.top()]=0;
s.pop();
}
book[s.top()]=0;
s.pop();
cnt++;
if(cnt>1) sum++;
}
}
int main()
{
int n,m,u,v;
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>u>>v;
e[u].push_back(v);
}
for(int i=1;i<=n;i++)
{
if(!tim[i]) dfs(i);
}
cout<<sum;
return 0;
}