#include <stdio.h>
#include <string.h>
const int maxn = 505;
int N, link[maxn];
bool graph[maxn][maxn], visit[maxn];
bool SearchPath(int u)
{
int v;
for (v = 0; v < N; v++)
{
if (graph[u][v] && !visit[v])
{
visit[v] = true;
if (link[v] == -1 || SearchPath(link[v]))
{
link[v] = u;
link[u] = v;
return true;
}
}
}
return false;
}
int MaxMatch()
{
int i, res = 0;
memset(link, -1, sizeof(link));
for (i = 0; i < N; i++)
{
if (link[i] == -1)
{
memset(visit, false, sizeof(visit));
if (SearchPath(i))
{
res++;
}
}
}
return res;
}
int main()
{
freopen("1.txt", "r", stdin);
int i, j, k, t;
char c;
bool over;
while (scanf("%d", &N) != EOF)
{
memset(graph, false, sizeof(graph));
getchar();
for (i = 0; i < N; i++)
{
over = false;
while (!over)
{
scanf("%c", &c);
if (c != '(')
{
continue;
}
else
{
scanf("%d", &j);
scanf("%c", &c);
for (k = 0; k < j; k++)
{
scanf("%d", &t);
graph[i][t] = true;
}
}
getchar();
over = true;
}
}
//最大独立集=顶点数-二分图最大匹配
printf("%d/n", N - MaxMatch());
}
return 0;
}