#include<cstdio>
#include<algorithm>
#define MAXN 99999999
using namespace std;
int dis[100],tu[100][100];//从z出发的dis值和邻接矩阵
int p,vis[100];//道路数目、节点标记
char r;
void di(int x,int y,int w)//存图
{
if(tu[x][y]==0)//读入边
{
tu[x][y]=w;
tu[y][x]=w;
}
if(w<tu[x][y])//读入的第二条边比第一条边的权值小,就替换
{
tu[x][y]=w;
tu[y][x]=w;
}
}
void dj()//迪杰斯特拉裸代码(好像是啊哈算法上面的??)
{
int u,min;
for(int i=1;i<=51;i++)
{
min=MAXN;
for(int j=1;j<=51;j++)
{
if(vis[j]==0&&dis[j]<min)
{
min=dis[j];
u=j;
}
}
vis[u]=1;
for(int v=1;v<=51;v++)
{
if(dis[v]>dis[u]+tu[u][v]&&vis[v]==0&&tu[u][v]<MAXN)
dis[v]=dis[u]+tu[u][v];
}
}
}
int main()
{
scanf("%d",&p);
for(int i=1;i<=52;i++)
for(int j=1;j<=51;j++)
tu[i][j]=MAXN;
vis[52]=1;//因为'Z'存图的时候是52,所以打上标记
for(int i=1;i<=p;i++)//借鉴楼上的读入
{
char x,y;//两个点
int c;//权值
int xx,yy;
scanf("\n%c %c %d",&x,&y,&c);
if(x>='a'&&x<='z') xx=x-'a'+1;
else xx=x-'A'+27;
if(y>='a'&&y<='z') yy=y-'a'+1;
else yy=y-'A'+27;
di(xx,yy,c);
}
for(int i=1;i<=51;i++)
dis[i]=tu[52][i];
dj();int hh=MAXN,point;
for(int i=1;i<=51;i++)//判断大写并输出
{
if(dis[i]<hh&&i>=27)
{
hh=dis[i];
point =i;
}
}
r=point-27+'A';
printf("%c %d\n",r,hh);
}
/**************************************************************
Problem: 2091
User: admin
Language: C++
Result: Accepted
Time:47 ms
Memory:1184 kb
****************************************************************/