// 匈牙利算法
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1010;
int n,m,vis[maxn],l[maxn],a[maxn][maxn],x,y,k,tot=0;
bool dfs(int x){
for(int i=1;i<=m;i++){
if(a[x][i]&&!vis[i]){
vis[i]=1;
if(!l[i]||dfs(l[i])){
l[i]=x;
return true;
}
}
}
return false;
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m>>k;
for(int i=1;i<=k;i++){
cin>>x>>y;
a[x][y]=1;
}
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
if(dfs(i)) tot++;
}
cout<<tot<<endl;
return 0;
}