#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,e;
vector <int> g[5100];
int vis[510];
int ans;
int tmp[510];
int flag[510][510];
int find(int x){
//cout<<x<<" "<<last<<endl;
for(int i=0;i<g[x].size();i++){
if(!vis[g[x][i]]&&!tmp[g[x][i]]){
vis[g[x][i]]=x;
return 1;
}
}
for(int i=0;i<g[x].size();i++){
if(!tmp[g[x][i]]){
tmp[g[x][i]]=1;
if(find(vis[g[x][i]])){
vis[g[x][i]]=x;
tmp[g[x][i]]=0;
return 1;
}
tmp[g[x][i]]=0;
}
}
return 0;
}
int main(int argc, char *argv[]) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
scanf("%d%d%d",&n,&m,&e);
for(int i=1;i<=e;i++){
int x,y;
scanf("%d%d",&x,&y);
if(x>n||y>m) continue;
if(flag[x][y]) continue;
flag[x][y]=1;
g[x].push_back(y);
}
for(int i=1;i<=n;i++){
//memset(tmp,0,sizeof(tmp));
if(find(i)){
ans++;
}
}
cout<<ans<<endl;
return 0;
}