#include <bits/stdc++.h>   using namespace std;   void dfs(long long v, vector<long long> adj[], vector<bool>& visited) {     cout << char(v +  a );     visited[v] = true;     for (long long u : adj[v]) {       if (!visited[u]) dfs(u, adj, visited);     }   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     ;     long long n;     cin >> n;     vector<long long> adj[26];     set<char> st;     vector<string> store;     for (long long i = 0; i < n; i++) {       string s;       cin >> s;       store.push_back(s);       st.insert(s[0]);       for (long long j = 0; j < s.length() - 1; j++) {         long long a = s[j] -  a , b = s[j + 1] -  a ;         adj[a].push_back(b);       }     }     queue<long long> q;     vector<bool> visited(26, false);     for (auto it : st) {       bool boo = true;       for (long long i = 0; i < store.size(); i++) {         string s = store[i];         for (long long j = 1; j < s.length(); j++) {           if (s[j] == it) {             boo = false;             goto h;           }         }       }     h:;       if (boo) {         q.push(it -  a );         visited[it -  a ] = true;       }     }     while (!q.empty()) {       long long v = q.front();       q.pop();       dfs(v, adj, visited);     }   }   