#include <iostream> #include <cstdio> #include <string> #include <vector> using namespace std; vector<char> ans; vector<char> toPoint[100]; int visit[100] = {0}; int deg[100] = {0}; // deg[i]=1:沒有被其他點連入 deg[i]=2:被其他點連入 void DFS(char n); int main() { // freopen("input.txt","rt",stdin); ios::sync_with_stdio(false); string a, b; cin >> a; while (cin >> b && b != "#") { int L = (a.size() > b.size()) ? b.size() : a.size(); for (int i = 0; i < L; ++i) { if (deg[a[i]] == 0) deg[a[i]] = 1; if (deg[b[i]] == 0) deg[b[i]] = 1; if (b[i] != a[i]) { toPoint[a[i]].push_back(b[i]); deg[b[i]] = 2; break; } } a = b; } for (char i = 'A'; i <= 'Z'; ++i) if (deg[i] == 1) DFS(i); for (auto iter = ans.rbegin(); iter != ans.rend(); ++iter) cout << *iter; cout << endl; } void DFS(char n) { if (visit[n] == 1) return; visit[n] = 1; for (char nxt : toPoint[n]) if (visit[nxt] != 2) DFS(nxt); visit[n] = 2; ans.push_back(n); }