#include <bits/stdc++.h>
using namespace std;
int a[105][105] = {0};
int pre[205], s[205] = {0}, vis[105];
int cat(int x, int n)
{
int i;
for(i = 1; i <= n; i++)
{
if(vis[i] == 0 && a[x][i])
{
vis[i] = 1;
if(!s[i] || cat(s[i], n))
{
s[i] = x;
return 1;
}
}
}
return 0;
}
int main()
{
int n, m, i, j, k, u, v;
scanf("%d %d", &n, &m);
for(i = 1; i <= m; i++)
{
scanf("%d %d", &u, &v);
a[u][v] = 1;
}
for(k = 1; k <= n; k++)
{
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(a[i][k] == 1 && a[k][j] == 1)a[i][j] = 1;
}
}
}
int ans = 0;
for(i = 1; i <= n; i++)
{
memset(vis, 0, sizeof(vis));
if(cat(i, n))ans++;
}
printf("%d\n", n - ans);
}