#include <iostream>
#include <cstring>

using namespace std;

bool compare[30][30];
bool slova[30];

int dfs(int pos){
    int rez = 1;
    slova[pos] = false;
    for (int i = 0; i < 30; ++i){
        if ((compare[i][pos] || compare[pos][i]) && slova[i]){
           rez += dfs(i);
        }
    }
    return rez;
}

int main(){
    int n;
    cin >> n;
    char rijeci[n][11];
    memset(rijeci, '\0', sizeof(rijeci));
    for (int i = 0; i < n; ++i){
        cin >> rijeci[i];
    }
    int broj = 0;
    for (int i = 0; i < n; ++i){
        for (int j = 0; rijeci[i][j] != '\0'; ++j){
            if (!slova[rijeci[i][j] - 'a']){
               ++broj;
            }
            slova[rijeci[i][j] - 'a'] = true;
        }
    }
    for (int i = 1; i < n; ++i){
        if (rijeci[i][0] != rijeci[i - 1][0]){
           compare[rijeci[i - 1][0] - 'a'][rijeci[i][0] - 'a'] = true;
           continue;
        }
        int l = 0, d = 11, s = 5;
        while (rijeci[i][s] == rijeci[i - 1][s] || memcmp(rijeci[i], rijeci[i - 1], s) != 0){
              if (!memcmp(rijeci[i], rijeci[i - 1], s)){
                 l = s;
              }
              else {
                   d = s;
              }
              s = (l + d) / 2;
        }
        compare[rijeci[i - 1][s] - 'a'][rijeci[i][s] - 'a'] = true;
        if (compare[rijeci[i][s] - 'a'][rijeci[i - 1][s] - 'a']){
           cout << "!\n";
           return 0;
        }
    }
    int pos = 0;
    for (; !slova[pos]; ++pos);
    if (dfs(pos) != broj){
       cout << "?\n";
       return 0;
    }
    for (int i = 0; i < n; ++i){
        for (int j = 0; rijeci[i][j] != '\0'; ++j){
            slova[rijeci[i][j] - 'a'] = true;
        }
    }
    char rez[broj + 1];
    rez[broj] = '\0';
    broj = 0;
    for (int i = 0; i < 30; ++i){
        if (slova[i]){
           rez[broj++] = i;
        }
    }
    
    for (int i = 0; i < broj; ++i){
        bool test = false;
        for (int j = i + 1; j < broj; ++j){
            if (compare[rez[j]][rez[i]]){
               char pom = rez[i];
               rez[i] = rez[j];
               rez[j] = pom;
               test = true;
               break;
            }
        }
        if (test){
           i = -1;
        }
    }
    for (int i = 0; i < broj; ++i){
        rez[i] += 'a';
    }
    cout << rez << endl;
    return 0;
}
