#include<bits/stdc++.h>
using namespace std;
#define inf 100004
#define maxn 505
int s,t,l,k[maxn],ans,cnt,head[maxn],a,b;
int m,n,e1,mp[maxn][maxn];
int x,ask[maxn];
struct edge{
int u,v,ne;
}e[inf];
void add(int f1,int t1){
e[++cnt].u=f1;
e[cnt].v=t1;
e[cnt].ne=head[f1];
head[f1]=cnt;
}
int dfs(int b){
for(int i=b;i!=-1;i=e[i].ne){
// cout<<e[i].u<<e[i].v<<endl;
int to=e[i].v;
if(ask[to])continue;
ask[to]=1;
if(k[to]==0||dfs(k[to])){
k[to]=i;return 1;
}
}
return 0;
}
int main(){
cin>>n>>m>>e1;
cnt=0;
for(int j=0;j<=n;j++)head[j]=-1;
for(int i=0;i<=m;i++)k[i]=0;
for(int i=1;i<=e1;i++){
cin>>a>>b;
if(a>n||b>m)continue;
add(a,b);
}
ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)ask[j]=0;
if(dfs(head[i]))ans++;
}
cout<<ans<<endl;
}
#5输出230 程序输出229 哪位大佬帮忙看看