#include <bits/stdc++.h>
using namespace std;

vector< char > topo;
vector< vector<int> > adj(26);
vector<bool> vis(26,true);
void toposort(int i)
{
    vis[i]=true;
    for(int j=0;j<adj[i].size();j++)
    {
        if(!vis[adj[i][j]])
            toposort(adj[i][j]);
    }
    topo.push_back(i+'a');
}
int main()
{
    int n,i;
    cin>>n;
    vector<string> v;
    string s;
    while(n--)
    {
        cin>>s;
        v.push_back(s);
    }
    for(i=0;i<v.size();i++)
    {
        for(int j=0;j<v[i].size();j++)
            vis[v[i][j]-'a']=false;
    }
    
    int len=v.size();
    for(i=0;i<len-1;i++)
    {
        int l1=v[i].size(),a;
        int l2=v[i+1].size();
        for(a=0;a<l1 && a<l2;a++)
        {
            if(v[i][a]!=v[i+1][a])
            {
                adj[v[i][a]-'a'].push_back(v[i+1][a]-'a');
                //cout<<v[i][a]-'a'<<' '<<v[i+1][a]-'a'<<endl;
                break;
            }
            
        }
    }
    
    for(i=0;i<26;i++)
    {
        if(!vis[i])
        {
            toposort(i);
        }
    }
    
    n=topo.size();
    for(i=n-1;i>=0;i--)
        cout<<topo[i]<<endl;
    return 0;
}
