#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
struct jibu45{
vector<int> wu;
}ss[N];
bool vis[N],match[N];
bool dfs(int x){
for(int i=0;i<ss[x].wu.size();++i){
int y=ss[x].wu[i];
if(!vis[y]){
vis[y]=1;
if(!match[y]||dfs(match[y])){
match[y]=x;return true;
}
}
}
return false;
}
int main(){
int n,m,e;scanf("%d%d%d",&n,&m,&e);
for(int i=1;i<=e;++i){
int a,b;scanf("%d%d",&a,&b);b+=n;
ss[a].wu.push_back(b);ss[b].wu.push_back(a);
}int ans=0;
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
if(dfs(i))ans++;
}
printf("%d",ans);
}
rt