#include <bits/stdc++.h>
using namespace std;
const int N=100010;
priority_queue<pair<int,int> > q;
int m,head[50],ver[N],Next[N],edge[N],idx;
long long dist[50];
bool st[50];
bool big[50];
void add(int x,int y,int z)
{
ver[++idx]=y;
edge[idx]=z;
Next[idx]=head[x];
head[x]=idx;
}
void dijkstra()
{
memset(dist,0x3f,sizeof(dist));
memset(st,0,sizeof(st));
dist[1]=0;
q.push(make_pair(0,1));
while(q.size())
{
int x=q.top().second; q.pop();
if(st[x]) continue;
st[x]=1;
for(int i=head[x];i;i=Next[i])
{
int y=ver[i],z=edge[i];
if(dist[y]>dist[x]+z)
{
dist[y]=dist[x]+z;
q.push(make_pair(-dist[y],y));
}
}
}
}
int main()
{
cin>>m;
while(m--)
{
char x,y;
int z;
cin>>x>>y>>z;
if(x>='A'&&x<'Z') big[int(x)-63]=1;
if(y>='A'&&y<'Z') big[int(y)-63]=1;
int o,p;
if(x>='A'&&x<='Y') o=int(x)-63;
else if(x>='a'&&x<='y') o=int(x)-95;
if(y>='A'&&y<='Y') p=int(y)-63;
else if(y>='a'&&y<='y') p=int(y)-95;
if(x=='Z') o=1;
if(y=='Z') p=1;
add(o,p,z);
add(p,o,z);
}
dijkstra();
int num=1e9;
int ans=0;
for(int i=2;i<=26;i++)
{
if(big[i]==1)
{
if(num>=dist[i])
{
num=dist[i];
ans=i;
}
}
}
cout<<char(ans+63)<<' '<<num;
return 0;
}