#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>

using namespace std;

const int inf = 255;

int N;
int diff = 0;
int letter[ 'z' + 1 ];
bool exist[ 'z' + 1 ];
string word[ 101 ];

int main()
{
  memset( letter, 0, sizeof letter );

  cin >> N;
  for( int i = 0; i < N; ++i )
  {
    cin >> word[i];
    for( int j = 0; j < word[i].length(); ++j )
    {
      if( !exist[ word[i][j] ] ) ++diff;
      exist[ word[i][j] ] = 1;
    }
  }

  bool wrong = false;

  for( int i = 0; i+1 < N && !wrong; ++i )
  {
    bool same = true;

    int minS = min( word[i].length(), word[i+1].length() );

    for( int j = 0; j < minS; ++j )
      if( word[i][j] != word[i+1][j] )
      {
        char let1 = word[i][j];
        char let2 = word[i+1][j];

        /*if( letter[let1] > 0 && letter[let2] > 0 )
          if( letter[let1] > letter[let2] )
            wrong = true;
          else if( letter[let1] < letter[let2] )
            continue;*/

        if( !letter[let1] && !letter[let2] )
        {
          letter[let1] = 1;
          letter[let2] = 2;
        }
        else
        {
          if( !letter[let1] )
          {
            int flag = max( 1, letter[let2] - 1 );
            for( int k = 'a'; k <= 'z'; ++k )
              if( letter[k] >= flag )
                ++letter[k];
            letter[let1] = flag;
          }
          else if( !letter[let2] )
          {
            letter[let2] = letter[let1] + 1;
          }
          else if( letter[let1] == letter[let2] )
          {
            ++letter[let2];
          }
        }

        same = false;
      }

    /*if( same && word[i].length() > word[i+1].length() )
      wrong = true;*/
  }


  /*if( wrong )
  {
    puts( "!" );
    return 0;
  }

  for( int i = 1; i < diff; ++i )
  {
    int cnt = 0;
    for( int j = 'a'; j <= 'z'; ++j ) if( letter[j] == i ) ++cnt;
    if( cnt > 1 )
    {
      puts( "!" );
      return 0;
    }
  }*/

  for( int i = 'a'; i <= 'z'; ++i )
    if( !letter[i] && exist[i] )
    {
      puts( "?" );
      return 0;
    }

  int order = 1;
  for( int i = 0; i < diff; ++i )
    for( int j = 'a'; j <= 'z'; ++j )
      if( letter[j] == order )
      {
        ++order;
        putchar( (char)j );
      }
}
