#include<bits/stdc++.h>
using namespace std;
int G[510][510];
int match[510],reverse_boy[510];
int n,m;
bool dfs(int x){
for(int i=1;i<=n;i++)
if(!reverse_boy[i]&&G[x][i]){
reverse_boy[i]=1;
if(!match[i]||dfs(match[i])){
match[i]=x;
return true;
}
}
return false;
}
int main(){
int e;scanf("%d%d%d",&n,&m,&e);
while(e--){int a,b;scanf("%d%d",&a,&b);G[a][b]=1;}
int sum=0;
for(int i=1;i<=n;i++){
memset(reverse_boy,0,sizeof(reverse_boy));
if(dfs(i))sum++;
}
printf("%d\n",sum);
return 0;
}