1 // Legacy Code
2 #include <iostream>
3 #include <cstdio>
4 #include <cstring>
5 #include <string>
6 #include <algorithm>
7 #include <utility>
8 #include <vector>
9 #include <map>
10 #include <queue>
11 #include <stack>
12 #include <cstdlib>
13 #include <cmath>
14 typedef long long ll;
15 #define lowbit(x) (x&(-x))
16 #define ls l,m,rt<<1
17 #define rs m+1,r,rt<<1|1
18 using namespace std;
19 const int N=550;
20 string s;
21 vector<int>v[N];
22 vector<string>vs[N];
23 map<int,string>mp;
24 map<string,int>mp1;
25 int n,k;
26 bool vis[N];
27 void dfs(int x)
28 {
29 vis[x]=1;
30 for(int j=0;j<v[x].size();j++){
31 if(!vis[v[x][j]]) dfs(v[x][j]);
32 }
33 return ;
34 }
35 int main()
36 {
37 scanf("%d",&n);
38 for(int i=1;i<=n;i++)
39 {
40 cin>>s;
41 mp[i]=s;
42 mp1[s]=i;
43 //两个map来进行整形和字符串的转换
44 scanf("%d",&k);
45 for(int j=0;j<k;j++)
46 {
47 cin>>s;
48 vs[i].push_back(s);
49 }
50 }
51 for(int i=1;i<=n;i++)
52 {
53 for(int j=0;j<vs[i].size();j++){
54 v[mp1[vs[i][j]]].push_back(i);//vs[i][j]可以调用i
55 }
56 }
57 memset(vis,0,sizeof(vis));
58 for(int i=1;i<=n;i++)
59 {
60 if(mp[i].find("PROGRAM")==mp[i].size()-7&&mp[i].size()!=6&&!vis[i]){
61 dfs(i);
62 }
63 }
64 int ans=0;
65 for(int i=1;i<=n;i++)
66 {
67 if(!vis[i]) ans++;
68 }
69 printf("%d\n",ans);
70 return 0;
71 }