#include using namespace std; int n,m,zc,len,i,k,cnt[55],p[1000100],st[1000100],e[1000100],last[1000100][55]; vector c[55]; char s[1000100]; int id(char c) { if (c>='a' && c<='z') return c-'a'; return 26+c-'A'; } char back(int i) { if (i<26) return 'a'+i; return 'A'+i-26; } void mov(int i) { putchar(back(i)); zc=0; for (int j=0; j0) cnt[i]++; } st[n]=len; for (i=0; i<52; i++) c[i].reserve(cnt[i]); for (i=0; i0 && cnt[i]==c[i].size()) break; if (i<52) { mov(i); continue; } for (k=i=0; i<52; i++) if (c[i].size()>c[k].size() || (c[i].size()==c[k].size() && cnt[i]