#include #include #include #include #include using namespace std; #define NMAX 105 string word[NMAX]; int d[NMAX], n; inline int cmp(const string& a, const string& b){ if(a.length() == b.length()) return a < b; return a.length() < b.length(); } int main () { //freopen("a.in","r",stdin); // freopen("a.out","w",stdout); cin >> n; for(int i = 1; i <= n; i++) cin >> word[i]; // return 0; sort(word + 1, word + n + 1, cmp); for(int i = n; i >= 1; i--) { int L = word[i].length(); for(int j = 0; j < L; j++) { for(int k = 1; k < i; k++) { int L2 = word[k].length(); if(L2 > j + 1) break; int ok = 1; for(int t = j - L2 + 1; t <= j; t++) if(word[i][t] != word[k][t - (j - L2 + 1)]) { ok = 0; break; } if(ok) { if(j == L2 - 1) { d[j] = max(d[j], 1); } else d[j] = max(d[j], d[j - L2] + 1); } } } if(d[L - 1]) { cout << word[i] << "\n"; return 0; } memset(d, 0, sizeof(d)); } cout << "-1\n"; return 0; }