#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int n,cut=1,head[10000001],d[1000001];
typedef pair<int,int> P;
struct th
{
int next,g,to;
}a[1000001];
void add(int v,int u,int w)
{
a[cut].to=u;
a[cut].next=head[u];
a[cut].g=w;
head[u]=cut++;
}
int main()
{
memset(head,-1,sizeof(head));
memset(d,0x3f,sizeof(d));
priority_queue<P,vector<P>,greater<P> > q;
d[26]=0;
q.push(P(0,26));
cin>>n;
for(int i=1;i<=n;i++)
{
char q,p;
int z;
cin>>q>>p>>z;
int x,y;
if(q>='A'&&q<='Z')
{
x=int(q)-64;
//cout<<x<<endl;
}
if(p>='A'&&p<='Z')
{
y=int(p)-64;
}
if(q>='a'&&q<='z')
{
x=int(q)-70;
}
if(p>='a'&&p<='z')
{
y=int(p)-70;
}
//cout<<x<<' '<<y<<endl;
add(x,y,z);
}
while(!q.empty())
{
P p=q.top();
q.pop();
int u=p.second;
if(d[u]<p.first) continue;
for(int i=head[u];i!=-1;i=a[i].next)
{
int v=a[i].to;
if(d[v]>d[u]+a[i].g)
{
d[v]=d[u]+a[i].g;
q.push(P(d[v],v));
}
}
}
int mi=0x7fffffff;
int mii;
/*for(int i=1;i<=25;i++)
{
cout<<d[i]<<' ';
}*/
for(int i=1;i<=25;i++)
{
if(mi>d[i])
{
mi=d[i];
mii=i;
}
}
cout<<char(mii+64);
cout<<' '<<mi;
return 0;
}
输出的是0x3f