#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
//英语 看博友分析 抄博友程序 dfs dp 背
struct nod{
int nex;
int to;
};
int n;
int tail[2000];
nod da[4000];
int addr;
int hs[2000];
int dp[2000][3];
void jia(int x,int y)//链表 //fa数组也能实现
{
da[++addr].nex=tail[x];
tail[x]=addr;//存储链表尾地址
da[addr].to=y;
}
void dfs(int x)
{
for(int i=tail[x];i!=0;i=da[i].nex)//背
{
int y=da[i].to;
dfs(y);
dp[x][1]=dp[x][1]+min(dp[y][0],dp[y][1]);
dp[x][0]=dp[x][0]+dp[y][1];
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(tail,0,sizeof(tail));
memset(da,0,sizeof(da));
memset(hs,0,sizeof(hs));
memset(dp,0,sizeof(dp));
addr=0;
int x,m;
for(int j=1;j<=n;j++)
{
dp[j][1]=1;//抄博友程序 关键
scanf("%d: (%d)",&x,&m);
for(int i=0;i<m;i++)
{
int y;
scanf("%d",&y);
jia(x+1,y+1);
hs[y+1]++;
}
}
int root;
for(int i=1;i<=n;i++)
{
if(hs[i]==0)
{
root=i;
break;
}
}
//cout<<root<<endl;
dfs(root);
/*
for(int i=1;i<=n;i++)
{
printf("%d ",i);
cout<<dp[i][0]<<" "<<dp[i][1]<<endl;
}*/
cout<<min(dp[root][1],dp[root][0])<<endl;
}
return 0;
}