#include <iostream>
//#include <fstream>
#include <string>
#include <algorithm>

using namespace std;

//ifstream cin ("x.in");
//ofstream cout ("x.out");

const int nmax = 100;
bool d[nmax + 1];
int ord[nmax + 1];

string best, s[nmax + 1];

inline bool cmp (int a, int b) {
    return s[ a ].size() < s[ b ].size();
}

int main() {
    int n;
    cin >> n;

    for (int i = 1; i <= n; ++ i) {
        cin >> s[ i ];
        s[ i ] = '+' + s[ i ];
        ord[ i ] = i;
    }
    sort(ord + 1, ord + n + 1, cmp);

    best = "+-1";
    for (int i = 1; i <= n; ++ i) {
        for (int j = 0; j <= 100; ++ j) d[ i ] = 0;
        d[ 0 ] = 1;

        int x = ord[ i ];
        for (int j = 1; j < (int)s[ x ].size(); ++ j) {
            for (int k = 1; k < i; ++ k) {
                bool ok = 1;
                int st = j - s[ ord[ k ] ].size() + 2;
                if (st < 1) continue;

                for (int shp = 1; shp < (int)s[ ord[ k ] ].size(); ++ shp, ++ st)
                    if (s[ x ][ st ] != s[ ord[ k ] ][ shp ]) {
                        ok = 0; break;
                    }

                if (ok) {
                    d[ j ] |= d[j - (int)s[ ord[ k ] ].size() + 1];
                }
            }
        }

        if (d[ s[ x ].size() - 1 ] == 1) {
            best = s[ x ];
        }
    }
    for (int i = 1; i < (int)best.size(); ++ i)
    cout << best[ i ];
    return 0;
}