// Time 1062 ms, Memory 4252K
#include<stdio.h> #include<string.h> int map[1010][1010],vis[1010],a[1010],b[1010],k; int f1(int u) { int v; for(v=0;v<k;v++) { if(map[u][v] && !vis[v]) { vis[v]=1; if(!b[v] || f1(b[v])) { a[u]=v;b[v]=u;return 1; } } } return 0; } int f2() { int i,ans=0; for(i=0;i<k;i++) { if(!a[i]) { memset(vis,0,sizeof(vis)); if(f1(i)) ans++; } } return ans; } int main() { int i,j,a1,b1,c; while(scanf("%d",&k)==1) { memset(map,0,sizeof(map)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(i=0;i<k;i++) { scanf("%d: (%d)",&a1,&b1); for(j=0;j<b1;j++) { scanf(" %d",&c); map[a1][c]=1; } } printf("%d\n",k-f2()/2); } return 0; }