#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 505int uN, vN;bool g[maxn][maxn];int xM[maxn], yM[maxn];bool chk[maxn];int n;void input(){ int a, m; memset(g, 0, sizeof(g)); for (int i = 0; i < n; i++) { scanf("%d", &a); scanf(": (%d)", &m); for (int j = 0; j < m; j++) { scanf("%d", &a); g[i][a] = true; } }}bool SearchPath(int u){ int v; for (v = 0; v < vN; v++) if (g[u][v] && !chk[v]) { chk[v] = true; if (yM[v] == -1 || SearchPath(yM[v])) { yM[v] = u; xM[u] = v; return true; } } return false;}int MaxMatch(){ int u, ret = 0; memset(xM, -1, sizeof(xM)); memset(yM, -1, sizeof(yM)); for (u = 0; u < uN; u++) if (xM[u] == -1) { memset(chk, false, sizeof(chk)); if (SearchPath(u)) ret++; } return ret;}int main(){ while (scanf("%d", &n) != EOF) { input(); uN = n; vN = n; printf("%dn", n - MaxMatch() / 2); } return 0;}