#include<bits/stdc++.h> using namespace std; int trie[1000005][28]; int odw[1000005]; vector<int> graf[1000005]; int gdz[1000005]; int topo[1000005]; vector<int> wy; vector<int> wy1; int ile = 0; int uni = 2; pair<int,pair<int,int>> dfs(int x,int gle) { vector<pair<int,int>> tab; int wyn = 0; for(int i = 0;i < 26;++i) { if(trie[x][i] == 0) continue; pair<int,pair<int,int>> c = dfs(trie[x][i],gle+1); wyn += c.first; tab.push_back(c.second); } if(tab.size() == 0) { //cout << x << ' '; ile++; return {gle,{gle,trie[x][26]}}; } //tab.push_back({1e9,-1}); //if(tab.size() == 1) //{ // return {wyn,tab[0]}; //} sort(tab.begin(),tab.end()); int gdzie = -1; //cout << wyn << ' ' << gle << endl; for(int i = 1;i < (int)tab.size();++i) { if(tab[i-1].first-gle+1 <= gle) { if(tab[i-1].second != -1) { graf[tab[i-1].second].push_back(tab[i].second); //cout << tab[i].second; } //wy.push_back(tab[i-1].second); wyn -= gle; wyn += tab[i-1].first-gle+1; //cout << tab[i-1] << endl; //cout << wyn << endl; gdzie = i-1; } else break; } for(int i = gdzie+1;i < tab.size();++i) { if(tab[i].first-gle+1 <= gle) { continue; } if(tab[i].second != -1) { wy1.push_back(tab[i].second); //cout << tab[i].second; } } //cout << wyn << endl; if(tab[gdzie+1].first-gle+1 <= gle) { return {wyn,tab[gdzie+1]}; } else return {wyn,{1e9,-1}}; } int main() { ios_base::sync_with_stdio(0); int n,x; string slo; //set<string> tak; vector<string> f; cin >> n; for(int i = 0;i < n;++i) { int gdzie = 1; cin >> slo; //tak.insert(slo); f.push_back(slo); for(int j = 0;j < slo.size();++j) { if(trie[gdzie][slo[j]-'a'] == 0) { trie[gdzie][slo[j]-'a'] = uni; trie[uni][27] = gdzie; uni++; } gdzie = trie[gdzie][slo[j]-'a']; } gdz[i+1] = gdzie; trie[gdzie][26] = i+1; } /*for(int i = 1;i < uni;++i) { for(int j = 0;j < 27;++j) { cout << trie[i][j] << ' '; } cout << endl; }*/ cout << dfs(1,0).first+n+n-ile << endl; vector<int> co; for(int i = 1;i <= n;++i) { for(int j : graf[i]) { topo[j]++; } } for(int i = 1;i <= n;++i) { bool czy = 0; for(int j = 0;j < 26;++j) { if(trie[gdz[i]][j] > 0) { czy = 1; break; } } if(topo[i] == 0 && czy == 0) { co.push_back(i); //cout << i << endl; } } vector<int> wynn; while(co.size()) { x = co.back(); co.pop_back(); vector<int> h; int gdzie = gdz[x]; //cout << 'l' << ' '<< x << endl; while(gdzie >= 1) { if(odw[gdzie] == 1) break; odw[gdzie] = 1; if(trie[gdzie][26] > 0) { h.push_back(trie[gdzie][26]); } gdzie = trie[gdzie][27]; } for(int i : graf[x]) { topo[i]--; if(topo[i] == 0) { //cout << i << endl; co.push_back(i); } } for(int i = h.size()-1;i >= 0;--i) { wynn.push_back(h[i]); } } cout << f[wynn[0]-1] << 'E'; for(int i = 1;i < wynn.size();++i) { int ile = 0; for(int j = 0;j < min(f[wynn[i]-1].size(),f[wynn[i-1]-1].size());++j) { if(f[wynn[i]-1][j] == f[wynn[i-1]-1][j]) { ile++; } else { break; } } //cout << ile << endl; if((int)f[wynn[i]-1].size()+1 <= ((int)f[wynn[i-1]-1].size())+((int)f[wynn[i]-1].size())+2-ile-ile) { cout << f[wynn[i]-1] << 'E'; } else { cout << 'T'; for(int j = 0;j < ((int)f[wynn[i-1]-1].size()-ile);++j) { cout << 'B'; } for(int j = ile;j < f[wynn[i]-1].size();++j) { cout << f[wynn[i]-1][j]; } cout << 'E'; } } /*for(int i = 1;i <= n;++i) { cout << i << ';' << ' '; for(int j : graf[i]) { cout << j << ' '; } cout << endl; }*/ /*for(int i : wy1) { int gdzie = 1; //cout << f[i-1] << endl; for(int j = 0;j < f[i-1].size();++j) { gdzie = trie[gdzie][f[i-1][j]-'a']; //cout << gdzie << endl; if(odw[gdzie] == 0) { if(trie[gdzie][26] != 0) { cout << trie[gdzie][26] << ' '; } odw[gdzie] = 1; } } }*/ }
57 a aaaaaababbbbabbbabaabbaabbabbbaabbbabbbbbbabaaaba aaaabaaabababbababbbbaababaabbbbabaaabaabaabaaabaabbabbbbbabbbbabaa aaaabaabababbaaabbabbbbabbaabbbabbaaabbbaaaaaabbbaababbabaaaabbabbabbbbbbaaaaaabaabab aaabababaabbabbbbbbaa aaababbabbabbabbbbabbababbaabbbbaaababaaabbbbaa aaabbaaaaababbabb aaabbbaabbabbbbabbabbbbaaabbbabaaabaabaabababaaabab aaabbbaba aaabbbabaabbbaaabbabbbaababaaaaaaabbbaaabaabaaaab aababbbabbaaabaaababbbbabaababbbbbbbbbbbbaaabbaaaababbbbba aabbabbaabaabbbabbabaabbaaabbbaba aabbbabbabbabbabaababbaaaaaaaabaaaabbbaaabaaaaabbbbbbbbbaabaaaabbbabbbbbabaaaba aabbbbabaababbabaaaabbaabaababab aabbbbbbabbaaaaaaaabbbbababbaaababaaabbbabababbabbaaabbbbaa abaaaaabbabbbbaabbbbaabbb abaaabbbbababababbbbbabbaaaab abaabbabbaaaababaaabbbaaaababaabbaabbaaababaabbbabbabbaababaabaaaaaa ababaabbaaabababaabbabbbaaaabaababbbabbabbb ababbabaabababbbaaaabbbaaaaababaaabaabaababaabaaa ababbabbabbbabbababbaaabab ababbbabbbababbaaabaabaaabbababaabbbbaaaabbaabbaabaabbaabaabbbabbbaabbababaaaaaaaaaaaba ababbbbabaababbbababbabbbbabbaabbbababbbbabbbaaababaaabbaabaabaabbaabaabaaab abbaaaababbabbaaaabaaaabaaaaababbabaaaabbb abbaabbbbbaabbaabbbabbabbaba abbabbaaaaaabaaaaabaaab abbabbabbaab abbabbbbbabaaaaabaaaaaaaaaaabbabbaabbaaaaaabbaababbaaaaaabbba abbbbaaa abbbbaabbbaaaaabbbbaababbbaababaaabaaaaaaaba ba baaaaababaaababbbaaaa baaabbbbbaabbabaabbaabaaababaaabbabbbbabbb baabaabbbbbbabbbaaabbabbbbabbbbaaabbbbabaaaaabaaabaaaaabaabaaabaaabababaaaababab baababbabbbbbbba baababbbbbab baabbbbabbabbbabbbabbabbabbbab baabbbbbbbabaabababaaababaabababaabbabaaabaabbbabbaaaaabbbbbbbabaaaabbabbaababbabbaaabbaaab babbbbaaababbabababbaabaabbbaaabaaabbbbabaaaabbbabbbaaaabaaaaabaabaabbbbaabbaabbbbbbaaababbbbaa babbbbaabaabbaaaaabababaaabaaaabaabaaaabbbbaaaababbaabbabbaaaababbabbbbbbababbabba babbbbabbaabaababbbababbabbbaaabbabaababbaaaaabbaababaaababbabb bbaaaaabaaaaaaaaababababba bbaaaababbbaabaabbaaabababababbbaaaaabaabbababbabbbaabaabababaaaaaaaaba bbaaabaabaabababaababaaaaabbababbabbaaaaabbaabaaabbba bbaaababbbaabaabbbaaaaaaaaa bbaabaabbbaaaaabaaabbaaaaaabbbbbababbbbabbbaaaabbbbbbbabaaaaabbbababbbbbbaaabbbbbabaaa bbaabbbabaaaababbbbaabbaaaabbbbbbbbbababbaaabbbbabbbbba bbaabbbabbaaaabbababbbbaaababaabbabababbbbb bbabaabaaabbabbabaaabaaaaaaaabaaaabbabbbbaaaaa bbabbbaabbbbbababaabaabbaabbbaabbbbbabbaaaab bbabbbbaabaabbbaaaaaabaabaabaaaaaaaaaababbabaabaaabbbbabbbab bbabbbbbaaaabbbbaabaabbabbbbabbbbbaabbabaaababbaaaaaabaaabaabaaabaaaaabababbbbba bbbaabbabbabbbaabbbaabbbbaabaaaaaabaabbbbaaaaaabbbbaabbaaa bbbbaaaaaaababbbbbabbabbbbababa bbbbabaaaaaabaaaaabbbbbbbbaabbaaabbbaaabbbabbbbbabaaaabbaababab bbbbabbaababaaaababbbaaaaaaaabaaaaaaababaabaaaaabaaaaabbbabaabbaabbbabbabbbaaabaab bbbbabbbbaababbbabaaabbaaa
2704 bbbbabbbbaababbbabaaabbaaaEbbbbabbaababaaaababbbaaaaaaaabaaaaaaababaabaaaaabaaaaabbbabaabbaabbbabbabbbaaabaabEbbbbabaaaaaabaaaaabbbbbbbbaabbaaabbbaaabbbabbbbbabaaaabbaabababEbbbbaaaaaaababbbbbabbabbbbababaEbbbaabbabbabbbaabbbaabbbbaabaaaaaabaabbbbaaaaaabbbbaabbaaaEbbabbbbbaaaabbbbaabaabbabbbbabbbbbaabbabaaababbaaaaaabaaabaabaaabaaaaabababbbbbaEbbabbbbaabaabbbaaaaaabaabaabaaaaaaaaaababbabaabaaabbbbabbbabEbbabbbaabbbbbababaabaabbaabbbaabbbbbabbaaaabEbbabaabaaabbabbabaaabaaaaaaaabaaaabbabbbbaaaaaEbbaabbbabbaaaabbababbbbaaababaabbabababbbbbEbbaabbbabaaaababbbbaabbaaaabbbbbbbbbababbaaabbbbabbbbbaEbbaabaabbbaaaaabaaabbaaaaaabbbbbababbbbabbbaaaabbbbbbbabaaaaabbbababbbbbbaaabbbbbabaaaEbbaaababbbaabaabbbaaaaaaaaaEbbaaabaabaabababaababaaaaabbababbabbaaaaabbaabaaabbbaEbbaaaababbbaabaabbaaabababababbbaaaaabaabbababbabbbaabaabababaaaaaaaabaEbbaaaaabaaaaaaaaababababbaEbaETbbbbabbaabaababbbababbabbbaaabbabaababbaaaaabbaababaaababbabbEbabbbbaabaabbaaaaabababaaabaaaabaabaaaabbbbaaaababbaabbabbaaaababbabbbbbbababbabbaEbabbbbaaababbabababbaabaabbbaaabaaabbbbabaaaabbbabbbaaaabaaaaabaabaabbbbaabbaabbbbbbaaababbbbaaEbaabbbbbbbabaabababaaababaabababaabbabaaabaabbbabbaaaaabbbbbbbabaaaabbabbaababbabbaaabbaaabEbaabbbbabbabbbabbbabbabbabbbabEbaababbbbbabETBBBBBabbbbbbbaEbaabaabbbbbbabbbaaabbabbbbabbbbaaabbbbabaaaaabaaabaaaaabaabaaabaaabababaaaabababEbaaabbbbbaabbabaabbaabaaababaaabbabbbbabbbEbaaaaababaaababbbaaaaEaEabbbbaabbbaaaaabbbbaababbbaababaaabaaaaaaabaEabbbbaaaEabbabbbbbabaaaaabaaaaaaaaaaabbabbaabbaaaaaabbaababbaaaaaabbbaEabbabbabbaabETBBBBBaaaaabaaaaabaaabEabbaabbbbbaabbaabbbabbabbabaEabbaaaababbabbaaaabaaaabaaaaababbabaaaabbbEababbbbabaababbbababbabbbbabbaabbbababbbbabbbaaababaaabbaabaabaabbaabaabaaabEababbbabbbababbaaabaabaaabbababaabbbbaaaabbaabbaabaabbaabaabbbabbbaabbababaaaaaaaaaaabaEababbabbabbbabbababbaaababEababbabaabababbbaaaabbbaaaaababaaabaabaababaabaaaEababaabbaaabababaabbabbbaaaabaababbbabbabbbEabaabbabbaaaababaaabbbaaaababaabbaabbaaababaabbbabbabbaababaabaaaaaaEabaaabbbbababababbbbbabbaaaabEabaaaaabbabbbbaabbbbaabbbEaabbbbbbabbaaaaaaaabbbbababbaaababaaabbbabababbabbaaabbbbaaEaabbbbabaababbabaaaabbaabaabababEaabbbabbabbabbabaababbaaaaaaaabaaaabbbaaabaaaaabbbbbbbbbaabaaaabbbabbbbbabaaabaEaabbabbaabaabbbabbabaabbaaabbbabaEaababbbabbaaabaaababbbbabaababbbbbbbbbbbbaaabbaaaababbbbbaEaaabbbabaETabbbaaabbabbbaababaaaaaaabbbaaabaabaaaabEaaabbbaabbabbbbabbabbbbaaabbbabaaabaabaabababaaababEaaabbaaaaababbabbEaaababbabbabbabbbbabbababbaabbbbaaababaaabbbbaaEaaabababaabbabbbbbbaaEaaaabaabababbaaabbabbbbabbaabbbabbaaabbbaaaaaabbbaababbabaaaabbabbabbbbbbaaaaaabaababEaaaabaaabababbababbbbaababaabbbbabaaabaabaabaaabaabbabbbbbabbbbabaaEaaaaaababbbbabbbabaabbaabbabbbaabbbabbbbbbabaaabaE