#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <string>
#include <cmath>
#include <cstring>

using namespace std;

struct ter{
    char x;
    string y;
    ter(){};
    ter(char _x, string _y):x(_x), y(_y){};
};



int n,e=0,broje=0,ttt=0,sz=0;
string s[128],rj="",dddg="";
char abc[32];
vector<char> V[128];
queue<ter> Q;

int niz[32];
map<char,int> M;
map<string,int> M2;

bool b[64];


void radi(){
    while(!Q.empty()){
    char on = Q.front().x;
    string so = Q.front().y;
    Q.pop();
    for(int i=0; i<so.size(); ++i)
    if(so[i]==on){
        rj="";
        break;
    }
    if(so.size()==e){
        rj=so;
        break;
    }
    so=so+on;
    //cout<<on<<endl;
    rj=so;
    for(int i=0; i<V[M[on]].size(); ++i)
        Q.push(ter(V[M[on]][i],so));
        }
}




int main(){
    cin>>n;
    for(int i=0; i<n; ++i)
        cin>>s[i];

    for(int i=0; i<n; ++i)
        for(int j=0; j<s[i].size(); ++j)
            if(M[s[i][j]]==0){
                abc[e]=s[i][j];
                ++e;
                M[s[i][j]]=e;
            }
        //cout<<e<<endl;

    for(int i=0; i<n; ++i)
        for(int j=i+1; j<n; ++j)
            for(int x=0; x<min(s[i].size(),s[j].size()); ++x)
                if(s[i][x]!=s[j][x]){
                    V[M[s[i][x]]].push_back(s[j][x]);
                    break;
                }

    for(int i=0; i<30; ++i){
    //cout<<endl;
            rj="";
            while(!Q.empty())
            Q.pop();
            for(int w=0; w<e; ++w)
            Q.push(ter(abc[w],rj));
            memset(b,0,sizeof b);
            radi();
            if((rj.size()==e)&&(M2[rj]==0)){
                M2[rj]=1;
                ++broje;
                dddg=rj;
            }
        }
    for(int i=0; i<dddg.size(); ++i)
        for(int j=i+1; j<dddg.size(); ++j)
        if(dddg[i]==dddg[j])
        ttt=1;
    if(dddg.size()==0)
    sz=1;

    if((broje==1)&&(ttt==0)&&(sz==0))
    cout<<dddg;
    if(ttt==1)
    cout<<"!";
    if(sz==1)
    cout<<"?";
    return 0;
}






