#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=0x3f3f3f3f;
int p[50];
struct edge{
int a,b,w;
}e[100];
bool cmp(edge a,edge b)
{
return a.w<b.w;
}
int find(int x)
{
if(p[x]!=x)
p[x]=find(p[x]);
return p[x];
}
int main()
{
int n;
while(cin>>n&&n)
{
for(int i=0;i<30;i++)
p[i]=i;
int k=0;
for(int i=0;i<n-1;i++)
{
char str1[3];
int m;
cin>>str1>>m;
for(int j=0;j<m;j++,k++)
{
char str2[3];
int t;
cin>>str2>>t;
e[k]={str1[0]-'A',str2[0]-'A',t};
}
}
sort(e,e+k,cmp);
int ans=0;
for(int i=0;i<k;i++)
{
int a=find(e[i].a);
int b=find(e[i].b);
int w=e[i].w;
if(a!=b)
{
ans+=w;
p[a]=b;
}
}
cout<<ans<<endl;
}
}