#include <cstdio>
using namespace std;
//避免冲突使用imax作为变量名
int x=0,imax=0,mj=0,num=0,a[26]={0};
bool b[26]={0},l=1;
int main(){
while(1){//输入(getchar)判定
x=getchar();
if(x>=65&&x<=90)
a[x-65]++;//a数组记录(A到Z)
else if(x==10) num++;
if(num>=4) break;//num计数跳出(4行)
}imax=a[0];
for(int i=1;i<26;i++)//记录最大值确定行数
if(a[i]>imax) imax=a[i];
for(int i=0;i<imax;i++){l=1;//打标签
for(int j=0;j<26;j++){
if(a[j]>=imax-i){
b[j]=1;mj=j;//记录"*"&&确定每一行最后位
}else b[j]=0;//覆盖上次行数据(不用memset,节约时间和头文件cstring)
}for(int j=0;j<=mj;j++){
if(b[j]){//判定并输出空格和"*"
if(l){l=0;printf("*");}
else printf(" *");
}else{//标签避免多余空格
if(l){l=0;printf(" ");}
else printf(" ");
}
}printf("\n");//换行
}printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
return 0;//打出字母(最后一排)
}
//哼!我这么认真的。。。
using namespace std;
//避免冲突使用imax作为变量名
int x=0,imax=0,mj=0,num=0,a[26]={0};
bool b[26]={0},l=1;
int main(){
while(1){//输入(getchar)判定
x=getchar();
if(x>=65&&x<=90)
a[x-65]++;//a数组记录(A到Z)
else if(x==10) num++;
if(num>=4) break;//num计数跳出(4行)
}imax=a[0];
for(int i=1;i<26;i++)//记录最大值确定行数
if(a[i]>imax) imax=a[i];
for(int i=0;i<imax;i++){l=1;//打标签
for(int j=0;j<26;j++){
if(a[j]>=imax-i){
b[j]=1;mj=j;//记录"*"&&确定每一行最后位
}else b[j]=0;//覆盖上次行数据(不用memset,节约时间和头文件cstring)
}for(int j=0;j<=mj;j++){
if(b[j]){//判定并输出空格和"*"
if(l){l=0;printf("*");}
else printf(" *");
}else{//标签避免多余空格
if(l){l=0;printf(" ");}
else printf(" ");
}
}printf("\n");//换行
}printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
return 0;//打出字母(最后一排)
}
//哼!我这么认真的。。。