#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int MAXN=1010;
int uN,vN;  //u,v
int g[MAXN][MAXN];//0~n-1
int linker[MAXN];//
bool used[MAXN]; //dfs
bool dfs(int u){
    int v;
    for(v=0;v<vN;v++)
        if(g[u][v]&&!used[v]){
            used[v]=true;
            if(linker[v]==-1||dfs(linker[v])){//vv
                linker[v]=u;
                return true;
            }
        }
    return false;
}

int hungary(){
    int res=0;
    int u;
    memset(linker,-1,sizeof(linker));
    for(u=0;u<uN;u++){
        memset(used,0,sizeof(used));
        if(dfs(u))  res++;
    }
    return res;
}

int main(){
    int n;
    int i, j;
    while(~scanf("%d", &n)){
        memset(g, 0, sizeof(g));
        uN = n;
        vN = n;
        for(i = 0; i < n; i ++){
            int a, b;
            int num;
            scanf("%d", &a);
            getchar();
            getchar();
            getchar();
            scanf("%d", &num);
            getchar();
            getchar();
            for(j = 0; j < num; j ++){
                scanf("%d", &b);
                g[a][b] = 1;
                g[b][a] = 1;
             }
        }
        int ans = n - hungary()/2;
        printf("%d\n", ans);
    }
    return 0;
}