// 一种简单而美的算法 匈牙利交朋友算法求最大匹配,
#include<bits/stdc++.h>
using namespace std;
const int _ = 1e6+10;
vector<int>g[_];//向量存边
int b[_],f[_];//b==vis,表示在当前伦次下是否被访问过,(访问x=find(x))
// f 匹配点。
bool find(int u){
for(auto v:g[u]){
if(!b[v]){
b[v]=1;//未访问过,打上访问标记
if(!f[v]||find(f[v]))return f[v]=u,1;
// 若此点未匹配或者 在bfs 搜索 搜索到未访问的点,设置匹配。 由于存在b标记,单次搜索至多只会遍历全图的便,即e次。
}
}
return 0;
}
int n,m,e;
int main(){
cin>>n>>m>>e;//A点数n,B点数m,边数e
while(e--){
int x,y;cin>>x>>y;
g[x].push_back(y);// 只有存单向便即可
}
int ans= 0;
for(int j=1;j<=m;j++)f[j]=0;//清空匹配
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)b[j]=0;//情况标记
if(find(i))ans++;//搜索+统计答案
}
cout<<ans;
return 0;
}