#include <iostream>
#include <algorithm>
using namespace std;
int mat[26][26];
int a[26], b[26];
bool postoji[26];
char rijec[101][15];
int n;

int main(){
	bool kontradikcija=0;
	cin >> n;
	for (int i=0; i<n; i++) cin >> rijec[i];
	for (int i=0; i<n-1; i++){
		int k=0;
		while (rijec[i][k]==rijec[i+1][k]) k++;
		if (rijec[i][k]!='\0' && rijec[i+1][k]!='\0'){
			if (mat[rijec[i][k]-'a'][rijec[i+1][k]-'a']==2) kontradikcija=1;
			mat[rijec[i][k]-'a'][rijec[i+1][k]-'a']=1;
			mat[rijec[i+1][k]-'a'][rijec[i][k]-'a']=2;
		}
	}
	
	for (int i=0; i<26; i++){
		bool postoji=0;
		for (int j=0; j<26; j++){
			if (mat[i][j]>0) postoji=1;
		}
		if (postoji==0){
			for (int j=0; j<26; j++) {
				mat[i][j]=-1;
				mat[j][i]=-1;
			}
		}
	}
	bool promjena=1;
	while (promjena){
		promjena=0;
		for (int i=0; i<26; i++) if (mat[i][i]!=-1){
			for (int j=0; j<26; j++) if (mat[j][j]!=-1){
				if (mat[i][j]==1){
					for (int k=0; k<26; k++){
						if (mat[j][k]==1 && mat[i][k]!=1){
							if (mat[i][k]==2) kontradikcija=1;
							mat[i][k]=1;
							mat[k][i]=2;
							promjena=1;
						}
					}
				}
				if (mat[i][j]==2){
					for (int k=0; k<26; k++){
						if (mat[j][k]==2 && mat[i][k]!=2){
							if (mat[i][k]==1) kontradikcija=1;
							mat[i][k]=2;
							mat[k][i]=1;
							promjena=1;
						}
					}
				}
			}
		}
	}
	
	bool nedovoljno=0;		
	if (kontradikcija){
		cout << '!';
		return 0;
	}
	
	int zbroj=0;
	for (int i=0; i<26; i++){
		for (int j=0; j<26; j++){
			if (mat[i][j]==2){
				a[i]++;
				zbroj++;
			}
			if (mat[i][j]==0 && i!=j) nedovoljno=1;
		}
		if (mat[i][i]==-1) a[i]=-1;
	}
	
	int broj=0;
	for(int i=0; i<n; i++){
		for (int j=0; rijec[i][j]!='\0'; j++){
			if (postoji[rijec[i][j]-'a']==0){
				broj++;
				postoji[rijec[i][j]-'a']=1;
			}
		}
	}
	for (int i=0; i<26; i++) if (mat[i][i]>-1) broj--;
	
	if (nedovoljno || broj!=0){
		cout << '?';
		return 0;
	}
	
	int brojac=0;	
	for (int i=0; i<26; i++) if (a[i]>-1){
		b[a[i]]=i;
		brojac++;
	}
	for (int i=0; i<brojac; i++){
		char x=b[i]+'a';
		cout << x;
	}
	return 0;
}
		
		
	
	
	
						
