#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");
}