#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
 
vector<string> ans;
map<string,int> change;
int N;
vector<string> t[200];
bool visited[200];
 
void rec(int pos){
  if(visited[pos])return;
  visited[pos]=true;
  int size=t[pos].size();
  for(int i=1;i<size;i++){
    int w=change[t[pos][i]];
    if(w==0)ans.push_back(t[pos][i]);
    else rec(w);
  }
}
 
 
void solve(){
  rec(1);
  sort(ans.begin(),ans.end());
  int cnt=0;
  for(int i=0;i<(int)ans.size();i++){
    //cout<<ans[i]<<endl;
    if(i&&ans[i]==ans[i-1])continue;
    cnt++;
  }
  cout<<cnt<<endl;
}
 
void init(){
  ans.clear();
  change.clear();
  for(int i=0;i<200;i++){
    visited[i]=false;
    t[i].clear();
  }
}
 
int main(){
  string str,tmp;
  while(cin>>N&&N){
    init();
    for(int i=1;i<=N;i++){
      cin>>str;
      int len=str.size();
      tmp="";
      for(int j=0;j<len;j++){
    if(str[j]==','||str[j]=='.'||str[j]==':')t[i].push_back(tmp),tmp="";
    else tmp.push_back(str[j]);
      }
      change[t[i][0]]=i;
    }
    solve();
  }
  return 0;
}