#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef pair Pr; int N,M,s_size; map m; vector a, b; queue q; int used[100]; int f(int n) { int num = 1; for (int i = 1; i <= n; i++) num *= i; return num; } int main() { cin >> N; for (int i = 0; i < N; i++) { string s; cin >> s; a.push_back(s); s_size += s.size(); for (int j = 0; j < s.size() - 1; j++) { string str = ""; str += s[j],str+= s[j+1]; m[str] = 1; } } cin >> M; for (int i = 0; i < M; i++) { string s; cin >> s; b.push_back(s); for (int j = 0; j < s.size() - 1; j++) { string str = ""; str += s[j],str+= s[j + 1]; m[str] = 1; } } for (int i = 0; i < f(N); i++) { string s; bool flag = true; for (auto x : a) { s += x; } for (int j = 0; j < s.size()-1; j++) { string str = ""; str += s[j]; str += s[j + 1]; if (m[str] == 0) { flag = false; break; } } if (flag) { cout << s << endl; return 0; } next_permutation(a.begin(), a.end()); } cout << -1 << endl; return 0; }