#include <vector>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <algorithm>
#include <sstream>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include<iomanip>
using namespace std;
typedef long long ll;
typedef vector <int> vi;
typedef pair< int ,int > pii;
#define pb push_back
#define sz size()
#define ln length()
#define fore(i,a,b) for(int i=a;i<b;i++)
#define fores(i,a,b) for(int i=a;i<=b;i++)
#define ford(i,a,b) for(int i=a;i>=b;i--)
#define all(a) a.begin(),a.end()
#define mp make_pair
#define ff first
#define ss second
#define MOD 1000000007
vector<vi> adj;
vi done;
map<string,int> track;
bool dfs(int i)
{
done[i] = 1;
bool found = true;
int nn = adj.sz;
fore(j,0,adj[i].sz)
{
if(adj[i][j]+1<=nn)
{
if((done[adj[i][j]]==0))
found = found && dfs(adj[i][j]);
else if(done[adj[i][j]]==1)
found = false;
}
else
found = false;
}
if(found)
done[i] = 2;
else
done[i] = 1;
return found;
}
int main() {
int tid = 0;
string s ;
getline(cin,s);
while(!s.empty())
{
cout<<s<<endl;
int n = s.ln;
string temp2 = "";
int i = 0;
while(s[i]!=' ')
{
temp2+=s[i];
i++;
}
if(track.count(temp2)>0)
{
if(track[temp2]+1>adj.sz)
adj.resize(track[temp2]+1);
}
else
{
track.insert(pair<string, int>(temp2, tid));
tid++;
if(track[temp2]+1>adj.sz)
adj.resize(track[temp2]+1);
}
int cur = track[temp2];
i++;
temp2 = "";
for(;i<n;i++)
{
if(s[i]!=' ')
temp2+=s[i];
else
{
if(temp2 == "0")
break;
if(track.count(temp2)>0)
{
adj[cur].pb(track[temp2]);
}
else
{
track.insert(mp(temp2,tid));
tid++;
adj[cur].pb(track[temp2]);
}
temp2 = "";
}
}
getline(cin,s);
}
int nn = adj.sz;
done.resize(nn);
fore(i,0,nn)
done[i] = 0;
fore(i,0,nn)
{
if(done[i]==0)
dfs(i);
}
ll fa = 0;
fore(i,0,nn)
{
if(done[i] == 2)
fa++;
}
cout<<fa;
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGU8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHZlY3RvciA8aW50PiB2aTsKdHlwZWRlZiBwYWlyPCBpbnQgLGludCA+IHBpaTsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBzeiBzaXplKCkKI2RlZmluZSBsbiBsZW5ndGgoKQojZGVmaW5lIGZvcmUoaSxhLGIpIGZvcihpbnQgaT1hO2k8YjtpKyspCiNkZWZpbmUgZm9yZXMoaSxhLGIpIGZvcihpbnQgaT1hO2k8PWI7aSsrKQojZGVmaW5lIGZvcmQoaSxhLGIpIGZvcihpbnQgaT1hO2k+PWI7aS0tKQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksYS5lbmQoKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKdmVjdG9yPHZpPiBhZGo7CnZpIGRvbmU7Cm1hcDxzdHJpbmcsaW50PiB0cmFjazsKYm9vbCBkZnMoaW50IGkpCnsKCWRvbmVbaV0gPSAxOwoJYm9vbCBmb3VuZCA9IHRydWU7CglpbnQgbm4gPSBhZGouc3o7Cglmb3JlKGosMCxhZGpbaV0uc3opCgl7CgkJaWYoYWRqW2ldW2pdKzE8PW5uKQoJCXsKCQkJaWYoKGRvbmVbYWRqW2ldW2pdXT09MCkpCgkJCQlmb3VuZCA9IGZvdW5kICYmIGRmcyhhZGpbaV1bal0pOwoJCQllbHNlIGlmKGRvbmVbYWRqW2ldW2pdXT09MSkKCQkJCWZvdW5kID0gZmFsc2U7CgkJfQoJCWVsc2UKCQkJZm91bmQgPSBmYWxzZTsKCX0KCWlmKGZvdW5kKQoJCWRvbmVbaV0gPSAyOwoJZWxzZQoJCWRvbmVbaV0gPSAxOwoJcmV0dXJuIGZvdW5kOwp9CmludCBtYWluKCkgewoJaW50IHRpZCA9IDA7CglzdHJpbmcgcyA7CglnZXRsaW5lKGNpbixzKTsKCXdoaWxlKCFzLmVtcHR5KCkpCgl7CgkJY291dDw8czw8ZW5kbDsKCQlpbnQgbiA9IHMubG47CgkJc3RyaW5nIHRlbXAyID0gIiI7CgkJaW50IGkgPSAwOwoJCXdoaWxlKHNbaV0hPScgJykKCQl7CgkJCXRlbXAyKz1zW2ldOwoJCQlpKys7CgkJfQoJCWlmKHRyYWNrLmNvdW50KHRlbXAyKT4wKQoJCXsKCQkJaWYodHJhY2tbdGVtcDJdKzE+YWRqLnN6KQoJCQkJYWRqLnJlc2l6ZSh0cmFja1t0ZW1wMl0rMSk7CgkJfQoJCWVsc2UKCQl7CgkJCXRyYWNrLmluc2VydChwYWlyPHN0cmluZywgaW50Pih0ZW1wMiwgdGlkKSk7CgkJCXRpZCsrOwoJCQlpZih0cmFja1t0ZW1wMl0rMT5hZGouc3opCgkJCQlhZGoucmVzaXplKHRyYWNrW3RlbXAyXSsxKTsKCQl9CgkJaW50IGN1ciA9IHRyYWNrW3RlbXAyXTsKCQlpKys7CgkJdGVtcDIgPSAiIjsKCQlmb3IoO2k8bjtpKyspCgkJewoJCQlpZihzW2ldIT0nICcpCgkJCQl0ZW1wMis9c1tpXTsKCQkJZWxzZQoJCQl7CgkJCQlpZih0ZW1wMiA9PSAiMCIpCgkJCQkJYnJlYWs7CgkJCQlpZih0cmFjay5jb3VudCh0ZW1wMik+MCkKCQkJCXsKCQkJCQlhZGpbY3VyXS5wYih0cmFja1t0ZW1wMl0pOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXRyYWNrLmluc2VydChtcCh0ZW1wMix0aWQpKTsKCQkJCQl0aWQrKzsKCQkJCQlhZGpbY3VyXS5wYih0cmFja1t0ZW1wMl0pOwoJCQkJfQoJCQkJdGVtcDIgPSAiIjsKCQkJfQoJCX0KCQlnZXRsaW5lKGNpbixzKTsKCX0KCWludCBubiA9IGFkai5zejsKCWRvbmUucmVzaXplKG5uKTsKCWZvcmUoaSwwLG5uKQoJCWRvbmVbaV0gPSAwOwoJZm9yZShpLDAsbm4pCgl7CgkJaWYoZG9uZVtpXT09MCkKCQkJZGZzKGkpOwoJfQoJbGwgZmEgPSAwOwoJZm9yZShpLDAsbm4pCgl7CgkJaWYoZG9uZVtpXSA9PSAyKQoJCQlmYSsrOwoJfQoJY291dDw8ZmE7CglyZXR1cm4gMDsKfQo=