#include<bits/stdc++.h>
using namespace std;
int _n,_m,_k,_cnt,_max,_cc,_sum;
struct p{
int v,nt;
}_road[50514];
int _head[2514],_bj[2255],_fg[2255];
int _map[1001][1001];
int _bj1[2514],_bj2[2514],_use[2005];
void put(int a,int b){
_road[++_cnt].v=b;
_road[_cnt].nt=_head[a];
_head[a]=_cnt;
}
bool dfs(int x,int tag){
if(_bj[x]==tag)return 0;
_bj[x]=tag;
for(int i = _head[x];i;i=_road[i].nt){
int v = _road[i].v;
if(!_fg[v]||dfs(_fg[v],tag)){
_fg[v]=x;
return 1;
}
}
return 0;
}
int main(){
cin >> _n >> _m;
int a,b;
for(int i = 1;i <= _m;i++){
cin >> a >> b;
put(a+1,b+1);
}
for(int i = 1;i <= _n;i++){
if(dfs(i,i)){
_sum++;
}
}
cout << _n-_sum << endl;
return 0;
}