每行末无空格
#include<bits/stdc++.h>
using namespace std;
struct bi{
int k,num;
}b[300];
int a[300];
bool cmp(bi x,bi y){
if(x.k==y.k){
return x.num<y.num;
}
return x.k>y.k;
}
vector<bi>v;
int main(){
string s1,s2,s3,s4,s;
getline(cin,s1);
getline(cin,s2);
getline(cin,s3);
getline(cin,s4);
s=s1+s2+s3+s4;
int n1,n2,n3,n4,n;
n1=s1.size(),n2=s2.size(),n3=s3.size(),n4=s4.size();
n=n1+n2+n3+n4;
for(int i=0;i<n;++i){
if(s[i]>='A'&&s[i]<='Z'){
a[s[i]-64]++;
b[s[i]-64].k++;
b[s[i]-64].num=s[i];
}
}
sort(b+1,b+27,cmp);
for(int i=1;i<=26;++i){
for(int j=1;j<=b[i].k;++j){
bi r;
r.k=j,r.num=b[i].num;
v.push_back(r);
}
}
sort(v.begin(),v.end(),cmp);
v.push_back(v[0]);
sort(v.begin(),v.end(),cmp);
v[0].num='B',v[0].k=0;
string p;
for(int i=1;i<=v.size();++i){
int m;
if(v[i].k!=v[i-1].k){
cout<<p<<endl;
p="";
if(v[i].num!='A'){
m=(v[i].num-'A')*2;
}else{
m=(v[i].num-v[i-1].num)*2-1;
}
}else{
m=(v[i].num-v[i-1].num)*2-1;
}
for(int j=1;j<=m;++j){
p+=" ";
}
p+="*";
}
for(int i=65;i<90;++i){
printf("%c ",i);
}
printf("Z");
return 0;
}