#include<iostream>#include<istream>#include<sstream>#include<vector>#include<stack>#include<list>#include<map>#include<set>#include<deque>#include<queue>#include<cstring>#include<unordered_map>#include<unordered_set>#include<algorithm>#include<numeric>#include<chrono>#include<ctime>#include<cmath>#include<cctype>#include<string>#include<cstdio>#include<iomanip>#include<thread>#include<mutex>#include<condition_variable>#include<functional>#include<iterator>usingnamespace std;inlineintread(int& x){char ch =getchar();int f =1; x =0;while(ch >'9'|| ch <'0'){if(ch =='-')f =-1; ch =getchar();}while(ch >='0'&& ch <='9'){ x =(x <<1)+(x <<3)+ ch -'0'; ch =getchar();}return x * f;}constint maxn =1e3+7;
vector<int> arr[maxn];int n, m, e,match[maxn],vis[maxn];booldfs(int x){for(int i =0; i < arr[x].size(); i++){int nx = arr[x][i];if(vis[nx])continue;
vis[nx]=1;if(match[nx]==0||dfs(match[nx])){
match[nx]= x;returntrue;}}returnfalse;}intmain(){int a, b,ans =0;
cin >> n >> m >> e;for(int i =0; i < e; i++){
cin >> a >> b;
arr[a].push_back(b);}for(int i =1; i <= n; i++){memset(vis,0,sizeof(vis));if(dfs(i)){++ans;}}
cout << ans << endl;return0;}