/****************************************************************************************************
Target: Bipartite Graph Match (According to the problem named "star") O(nlog(n))
—— From WZJ
Author: Xue Zhonghao
Date: 2014-3-18 19:11:11
****************************************************************************************************/
#include<cstdio>
#include<cstdlib>
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("input.txt");
ofstream fout("output.txt");
#define cin fin
#define MAXA 5000
#define MAXB 5000
int a[MAXA][MAXB];
bool vis[MAXB];
int b[MAXB];
bool find(int k) {
if(k == 0) return true;
for(int i = 1; i <= a[k][0]; ++i)
if(!vis[a[k][i]]) {
vis[a[k][i]] = true;
if(find(b[a[k][i]])) {
vis[a[k][i]] = false;
b[a[k][i]] = k;
return true;
}
}
return false;
}
int main(void)
{
int N, K;
cin>>N>>K;
int x, y;
for(int i = 0; i < K; ++i) {
cin>>x>>y;
a[x][++a[x][0]] = y;
}
int ans = 0;
for(int i = 0; i < N; ++i)
if(find(i)) ans++;
cout<<ans<<endl;
system("pause");
return 0;
}