/*
AizuOnline A1305
Title:Membership Management
@kankichi573
*/
#include <stdio.h>
#include <string.h>
//Global data section
int n;
char buf[100][10000];
//
#define MEIBOSIZE 10000
char meibo[MEIBOSIZE][16];
int  keisuu[15]={977,1811,691,463,4421,199,991,1607,
                 607,877,1427,1087,383,433,1213};
//
int hashfunc(char * s)
{
        int i,sum;

        sum=0;
        for(i=0;i<2 && s[i];i++)
        {
                sum+=keisuu[i]*(s[i]-'a'+1);
        }

        sum %= MEIBOSIZE;
        if(sum<0)
                sum += MEIBOSIZE;
#ifdef DEBUG
        printf("sum=%d\n",sum);
#endif
        return(sum);
}
int find(char * s)
{
        int hash;
        hash=hashfunc(s);
        while(meibo[hash][0])
        {
                if(0==strcmp(s,&meibo[hash][0]))
                        return(hash);
                hash++;
                if(hash>=MEIBOSIZE)
                        hash=0;
        }
        return(-1);
}
void regist(char * s)
{
        int hash;
        hash=hashfunc(s);
        while(meibo[hash][0])
        {
                hash++;
                if(hash>=MEIBOSIZE)
                        hash=0;
        }
        strcpy(&meibo[hash][0],s);
}
int what_group(char * name,int len)
{
        int i;

        for(i=0;i<n;i++)
        {
                if(0==strncmp(name,&buf[i][0],len)
                   && buf[i][len]==':')
                        return(i);
        }
        return(-1);
}
int how_many_members(int grp,int depth)
{
        char *p,*pold;
        int sum,gr,j;
        char buf2[10000];

        strcpy(buf2,&buf[grp][0]);
        p=buf2;pold=buf2;
        while(*p!=':' && *p)
                p++;
        *p='\0';
#ifdef DEBUG
        for(j=0;j<depth;j++)
                printf(":");
        printf("GR=%s\n",pold);
#endif
        sum=0;
        while(1)
        {
                p++;
                pold=p;

                while(((*p!=',')&&(*p!='.')&&(*p!=0)))
                        p++;
                if(*p=='\0')
                        break;

                *p='\0';
#ifdef DEBUG
                for(j=0;j<depth;j++)
                        printf(":");
                printf(":MEM=%s\n",pold);
#endif
                if((gr=what_group(pold,strlen(pold)))!=-1) //
                        sum += how_many_members(gr,depth+1);
                else
                        if(find(pold)==-1)
                        {
                                regist(pold);
                                sum ++;  // 構成員
                        }
        }
        return(sum);
}
main()
{
        int i;

        while(EOF!=scanf("%d",&n) && n)
        {
                memset(&meibo[0][0],0,MEIBOSIZE*16);
                for(i=0;i<n;i++)
                        scanf("%s",&buf[i][0]);

                for(i=0;i<n;i++)
                      printf("%s\n",&buf[i][0]);
                printf("%d\n",how_many_members(0,1));
        }
        return(0);
}