#include<bits/stdc++.h>
#define int long long
using namespace std;
const long long maxn=1e3+10;
vector <int> v[35],g[maxn];
bool vis[maxn];
priority_queue <string,vector<string>,greater<string> >q;
string s[maxn];
int n;
int sum;
void DFS(int x,int cnt,string t){
if(cnt == n){
q.push(t);
return ;
}
for(int i=0;i<g[x].size();i++){
int u = g[x][i];
if(vis[u])continue;
vis[u] = 1;
DFS(u,cnt+1,t+'.'+s[u]);
vis[u] = 0;
}
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
int len=s[i].size();
for(int j=0;j<v[s[i][0]-'a'].size();j++){
int u = v[s[i][0]-'a'][j];
g[i].push_back(u);
g[u].push_back(i);
}
v[s[i][len-1]-'a'].push_back(i);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)vis[j] = 0;
DFS(i,1,s[i]);
}
cout<<q.top()<<endl;
return 0;
}