#define _USE_MATH_DEFINES
#include <cstdio>
#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <complex>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <bitset>
#include <numeric>
#include <limits>
#include <climits>
#include <cfloat>
#include <functional>
#include <iterator>
using namespace std;

int main()
{
    string to(128, ' ');
    vector<bool> isUsed(128, false);
    vector<bool> isPrev(128, false);

    for(int i=0; i<2; ++i){
        int n;
        cin >> n;
        for(int j=0; j<n; ++j){
            string s;
            cin >> s;
            int m = s.size();
            for(int k=0; k<m; ++k)
                isUsed[s[k]] = true;
            for(int k=1; k<m; ++k){
                to[s[k-1]] = s[k];
                isPrev[s[k]] = true;
            }
        }
    }

    char x = ' ';
    for(char c='A'; c<='Z'; ++c){
        if(isUsed[c] && !isPrev[c]){
            if(x != ' '){
                cout << -1 << endl;
                return 0;
            }
            x = c;
        }
    }

    string ans;
    while(x != ' '){
        ans += x;
        x = to[x];
    }
    cout << ans << endl;
    return 0;
}