#include //#include #include #include 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; }