#include<iostream>
#include<stdio.h>
#include<string.h>
#include<sstream>
#define max 11000
#define infinity 999999
int arr[max][20];
int state[max];
int pred[max];
int n;
int colour[max];
using namespace std;
void reset_dp()
{
for(int i=0;i<=n;i++)
{
for(int j=0;j<=20;j++)
{
arr[i][j]=-1;
}
}
}
void reset_pred()
{
for(int i=0;i<n;i++)
{
pred[i]=-1;
}
}
int fun(int vi,int c)
{
int m,flag,k;
if(arr[vi][c]!=-1)
{
return arr[vi][c];
}
flag=k=0;
for(int i=0;i<n;i++)
{
if(pred[i]==vi)
{
flag=1;
m=infinity;
for(int cl=1;cl<=20;cl++)
{
if(cl!=c)
{
arr[i][cl]=fun(i,cl);
if(arr[i][cl]<m)
{
m=arr[i][cl];
}
}
}
k=k+m;
}
}
if(flag==0)
{
return c;
}
else
{
arr[vi][c]=c+k;
return arr[vi][c];
}
}
int main()
{
int k,vi,min;
while(1)
{
cin>>n;
if(n==0)
break;
reset_dp();
min=infinity;
reset_pred();
k=getchar();
for(int i=0;i<n;i++)
{
string str;
stringstream ss;
getline(cin,str);
ss<<str;
char c;
int u, v;
ss>>u;
ss>>c;
while(ss>>v)
{
pred[v]=u;
}
}
for(int i=0;i<n;i++)
{
if(pred[i]==-1)
{
vi=i;
break;
}
}
for(int i=1;i<=20;i++)
{
int k=fun(vi,i);
if(k<min)
min=k;
}
cout<<min<<"\n";
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0cmluZy5oPgojaW5jbHVkZTxzc3RyZWFtPgojZGVmaW5lIG1heCAxMTAwMAojZGVmaW5lIGluZmluaXR5IDk5OTk5OQppbnQgYXJyW21heF1bMjBdOwppbnQgc3RhdGVbbWF4XTsKaW50IHByZWRbbWF4XTsKaW50IG47CmludCBjb2xvdXJbbWF4XTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdm9pZCByZXNldF9kcCgpCnsKCWZvcihpbnQgaT0wO2k8PW47aSsrKQoJewoJCWZvcihpbnQgaj0wO2o8PTIwO2orKykKCQl7CgkJCWFycltpXVtqXT0tMTsKCQl9Cgl9Cn0Kdm9pZCByZXNldF9wcmVkKCkKewoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQlwcmVkW2ldPS0xOwoJfQp9CmludCBmdW4oaW50IHZpLGludCBjKQp7CglpbnQgbSxmbGFnLGs7CglpZihhcnJbdmldW2NdIT0tMSkKCXsKCQlyZXR1cm4gYXJyW3ZpXVtjXTsKCX0KCWZsYWc9az0wOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQlpZihwcmVkW2ldPT12aSkKCQl7CgkJCWZsYWc9MTsKCQkJbT1pbmZpbml0eTsKCQkJZm9yKGludCBjbD0xO2NsPD0yMDtjbCsrKQoJCQl7CgkJCQlpZihjbCE9YykKCQkJCXsKCQkJCQlhcnJbaV1bY2xdPWZ1bihpLGNsKTsKCQkJCQlpZihhcnJbaV1bY2xdPG0pCgkJCQkJewoJCQkJCQltPWFycltpXVtjbF07CgkJCQkJfQoJCQkJfQoJCQl9CgkJICBrPWsrbTsKCQl9Cgl9CglpZihmbGFnPT0wKQoJewoJCXJldHVybiBjOwoJfQoJZWxzZQoJewoJCWFyclt2aV1bY109YytrOwoJCXJldHVybiBhcnJbdmldW2NdOwoJfQp9CgkJCmludCBtYWluKCkKeyAKICAgIGludCBrLHZpLG1pbjsKICAgIHdoaWxlKDEpCiAgICB7CiAgICAJY2luPj5uOwogICAgCWlmKG49PTApCiAgICAJICBicmVhazsKICAgIAlyZXNldF9kcCgpOwogICAgCW1pbj1pbmZpbml0eTsKICAgIAlyZXNldF9wcmVkKCk7CiAgICAJaz1nZXRjaGFyKCk7CiAgICAJZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgewogICAgICAgICAgICBzdHJpbmcgc3RyOwogICAgICAgICAgICBzdHJpbmdzdHJlYW0gc3M7CiAgICAgICAgICAgIGdldGxpbmUoY2luLHN0cik7CiAgICAgICAgICAgIHNzPDxzdHI7CiAgICAgICAgICAgIGNoYXIgYzsKICAgICAgICAgICAgaW50IHUsIHY7CiAgICAgICAgICAgIHNzPj51OwogICAgICAgICAgICBzcz4+YzsKICAgICAgICAgICAgd2hpbGUoc3M+PnYpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHByZWRbdl09dTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgewogICAgCSAgICBpZihwcmVkW2ldPT0tMSkKICAgIAkgICAgICB7CiAgICAJCSAgICAgdmk9aTsKICAgIAkJICAgICAgYnJlYWs7CiAgICAJICAgICB9CiAgICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7aTw9MjA7aSsrKQogICAgICAgIHsKICAgICAgICAJaW50IGs9ZnVuKHZpLGkpOwogICAgICAgIAlpZihrPG1pbikKICAgICAgICAJICBtaW49azsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY291dDw8bWluPDwiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCg==