/*
二分图匹配
匈牙利
by sbn
*/#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;
boolmap[1001][1001];
int n1,n2,m;
int flag[1001],vis[1001];
bool dfs(int x){
for (int i1=1;i1<=n2;i1++){
if (map[x][i1]&&!vis[i1]){
vis[i1]=1;
if (flag[i1]==0||dfs(flag[i1])){
flag[i1]=x;
returntrue;
}
}
}
returnfalse;
}
int main(){
cin>>n1>>n2>>m;
for (int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
if (a<=n1&&b<=n2)
map[a][b]=1;
}
int ans=0;
for (int i=1;i<=n1;i++)
{
memset(vis,0,sizeof(vis));
if (dfs(i)) ans++;
}
cout<<ans<<endl;
}