#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
void update(vector<vector<int>>&p, int start, int end) {
for (int k= 0; k < 5; k++) {
if (p[end][k] != 0) {
p[start][k] = max(p[start][k], p[start][end] + p[end][k]);
update(p, start, k);
}
}
}
int main() {
int m;
cin >> m;
vector<vector<int>>p(5, vector<int>(5,0));
for (int i = 0; i < m; i++) {
string s;
cin>>s;
for (int j = 1; j < s.length()-1; j+=2) {
if (s[j] > '0'&&s[j] <= '9') {
p[s[j - 1] - 'A'][s[j + 1] - 'A'] = max(s[j] - '0',p[s[j - 1] - 'A'][s[j + 1] - 'A']);
}
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (p[i][j] != 0) {
update(p, i, j);
}
}
}
int re = 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (p[i][j] >re) {
re = p[i][j];
}
}
}
bool f = true;
for (int i = 0; i < 5; i++) {
if (p[i][i] != 0) {
f = false;
break;
}
}
if (f) {
cout << re;
}
else {
cout << -1;
}
system("pause");
}