#include <bits/stdc++.h>
using namespace std;
int m,N,res,x[500005],y[500005],xmat[20005],ymat[20005],s,tmp[40005],st[20005];
bool xmarked[20005],ymarked[20005];
vector<int> xto[20005];
bool dfs(int n) {
int k=st[n];
for (int i=k;i<xto[n].size();i++) {
int Y=xto[n][i];
st[n]=i+1;
if (Y==xmat[n]) continue;
if (!ymarked[Y] || dfs(ymat[Y])) {
xmat[n]=Y;
ymat[Y]=n;
ymarked[Y]=1;
return 1;
}
}
return 0;
}
int main() {
scanf("%d%d",&m,&N);
scanf("%d",&s);
for (int i=1;i<=s;i++) {
scanf("%d%d",&x[i],&y[i]);
xto[x[i]].push_back(y[i]);
}
for (int i=1;i<=m;i++) {
if (dfs(i)) res++;
}
printf("%d",res);
return 0;
}