#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
const int N=255,M=20005;
int h[N],nxt[M],v[M],e[M],d[N],m,len,ans;
bool b[N];
struct node{
int p,d;
bool operator <(const node &a)const{
return d>a.d;
}
};
priority_queue<node> q;
void dijsktra(int p){
q.push(node{p,d[p]});
while (!q.empty()){
int x=q.top().p;q.pop();
if (b[x]) continue;
b[x]=1;
for (int i=h[x];i;i=nxt[i]){
int y=v[i];
if (d[y]>d[x]+e[i]){
d[y]=d[x]+e[i];
q.push(node{y,d[i]});
}
}
}
}
void add(int x,int y,int z){
v[++len]=y;
e[len]=z;
nxt[len]=h[x];
h[x]=len;
}
void read(char &ch){
ch=getchar();
while ((ch<'a'||ch>'z')&&(ch<'A'||ch>'Z'))
ch=getchar();
}
int main(){
// freopen("P1529_5.in","r",stdin);
scanf("%d",&m);
memset(d,0x3f,sizeof(d));
for (int i=1;i<=m;++i){
char a,b;int z;
read(a);read(b);scanf("%d",&z);
int x=a,y=b;
add(x,y,z);
add(y,x,z);
}
d[90]=0;
dijsktra(90);
for (int i=65;i<=89;++i)
if (d[i]<d[ans])
ans=i;
printf("%c %d",ans,d[ans]);
// fclose(stdin);
return 0;
}