#include #include #include #include #include #include #include #include #include #include #include #include #define Max 2505 #define FI first #define SE second #define ll long long #define PI acos(-1.0) #define inf 0x3fffffff #define LL(x) ( x << 1 ) #define bug puts("here") #define PII pair #define RR(x) ( x << 1 | 1 ) #define mp(a,b) make_pair(a,b) #define mem(a,b) memset(a,b,sizeof(a)) #define REP(i,s,t) for( int i = ( s ) ; i <= ( t ) ; ++ i ) using namespace std; int G , B , N ; int Map[444][444] ; bool vis[444] ; int link[444] ; bool find(int now){ for (int i = G + 1 ; i <= G + B ; i ++ ){ if(Map[now][i] && !vis[i]){ vis[i] = 1 ; if(link[i] == -1 || find(link[i])){ link[i] = now ;return 1 ; } } } return 0 ; } int main() { int ca = 0 ; while(cin > > G >> B >> N ,(G + B + N)){ mem(Map ,-1) ; mem(link ,-1) ; for (int i = 0 ; i < N ; i ++ ){ int s , t ; scanf("%d%d",&s,&t) ; Map[s][t + G] = 0 ; // Map[t + G][s] = 0 ; } int ans = 0 ; for (int i = 1 ; i <= G ; i ++ ){ mem(vis ,0) ; ans += find(i) ; } printf("Case %d: %d\n",++ ca ,G + B - ans) ; } return 0; }