#include<bits/stdc++.h>
using namespace std;
int edge[1005][1005];
int match_x[1005];
int match_y[1005];
int book[1005];
int n,m,e;
int dfs(int u)
{
for(int i=1;i<=m;i++)
{
if(book[i]==0&&edge[u][i]==1)//有边且没有访问过
{
book[i]=1;
if(match_y[i]==0||dfs(match_y[i]))//y没有匹配或者y的男友找到了增广路
{
match_x[u]=i;
match_y[i]=u;//此模板要分开标记配对,因为男女编号相同
return true;
}
}
}
return false;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>e;
for(int i=1;i<=e;i++)
{
int a,b;
cin>>a>>b;
if(a>=1&&b>=1&&a<=n&&b<=m)//卡掉奇怪的数据
{
edge[a][b]=1;//只需要从男友开始找增广路
//edge[b][a]=1;
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
memset(book,0,sizeof(book));//清空访问过的标记
if(dfs(i)) ans++;
}
cout<<ans<<endl;
return 0;
}//当且仅当无向图G的回路个数为偶数时,图G为一个二分图。