#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ALL(c) (c).begin(),(c).end() #define IN(x,c) (find(c.begin(),c.end(),x) != (c).end()) #define REP(i,n) for (int i=0;i<(int)(n);i++) #define FOR(i,a,b) for (int i=(a);i<=(b);i++) #define INIT(a,v) memset(a,v,sizeof(a)) #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) template A cvt(B x) { stringstream ss; ss<>y; return y; } typedef pair PII; typedef long long int64; int n; string s[300]; vector nc[300]; int deg[300]; int main() { cin >> n; REP (i,n) cin >> s[i]; int ok=1; REP (i,n) { REP (j,i) { int k=0; while (ks[i].size()) ok=0; } } } queue q; FOR (c,'a','z') { if (deg[c]==0) q.push(c); } string r=""; while (!q.empty()) { char c=q.front(); q.pop(); r+=c; for (int d : nc[c]) { deg[d]--; if (deg[d]==0) q.push(d); } } if (r.size()!=26) ok=0; if (!ok) cout << "Impossible" << endl; else cout << r << endl; return 0; }