#include #define pb push_back #define f first #define s second #define pii pair #define mp make_pair using namespace std; const string name = "B", in_file = name + ".in", out_file = name + ".out"; ifstream fin(in_file); ofstream fout(out_file); const int MAX = 101; int n; int dp[MAX]; string word[MAX]; bool can_do(int index) { for (int i = 0; i < (int)word[index].size(); i++) { for (int j = 1; j <= n; j++) { if (j == index) { continue; } if (i + 1 >= (int)word[j].size() && (!(i - word[j].size() + 1) || dp[i - word[j].size()])) { bool works = true; for (int k1 = 0, k2 = i - word[j].size() + 1; k1 < (int)word[j].size(); k1++, k2++) { if (word[j][k1] != word[index][k2]) { works = false; break; } } if (works) { dp[i] = 1; } } } } return dp[word[index].size() - 1]; } int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> word[i]; } int sol = 0, index_sol = -1; for (int i = 1; i <= n; i++) { if (can_do(i)) { if (sol < (int)word[i].size()) { sol = (int)word[i].size(); index_sol = i; } } } cout << (index_sol == -1 ? "-1": word[index_sol]); return 0; }