#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int ans[105];bool vis[104];
int main(){
string a,b,c,d;
getline(cin,a);
getline(cin,b);
getline(cin,c);
getline(cin,d);
for(int i = 0;i<a.length();++i){
if(a[i] > 90||vis[i]||a[i] == ' '||a[i] == '.'||a[i] == '!') continue;
else ++ans[a[i] - 'A'];
for(int j = i+1;j<a.length();++j){
if(a[i] == a[j]&&!vis[j]){
++ans[a[j]-'A'];
vis[j] = 1;
}
}
}
memset(vis,0,sizeof(vis));
for(int i = 0;i<b.length();++i){
if(b[i] > 90||vis[i]||b[i] == ' '||b[i] == '.'||b[i] == '!') continue;
else ++ans[b[i] - 'A'];
for(int j = i+1;j<b.length();++j){
if(b[i] == b[j]&&!vis[j]){
++ans[b[j]-'A'];
vis[j] = 1;
}
}
}
memset(vis,0,sizeof(vis));
for(int i = 0;i<c.length();++i){
if(c[i] > 90||vis[i]||c[i] == ' '||c[i] == '.'||c[i] == '!') continue;
else ++ans[c[i] - 'A'];
for(int j = i+1;j<c.length();++j){
if(c[i] == c[j]&&!vis[j]){
++ans[c[j]-'A'];
vis[j] = 1;
}
}
}
memset(vis,0,sizeof(vis));
for(int i = 0;i<d.length();++i){
if(d[i] > 90||vis[i]||d[i] == ' '||d[i] == '.'||d[i] == '!') continue;
else ++ans[d[i] - 'A'];
for(int j = i+1;j<d.length();++j){
if(d[i] == d[j]&&!vis[j]){
++ans[d[j]-'A'];
vis[j] = 1;
}
}
}
int maxn = 0;
for(int i = 0;i<=10;++i){
maxn = 0;
for(int j = 0;j<=25;++j){
maxn = max(maxn,ans[j]);
}
if(maxn == 0)break;
bool flag = 0;
for(int k = 0;k<=25;++k){
if(ans[k] < maxn)cout<<" ";
if(k!=0)cout<<" ";
if(ans[k] == maxn) {cout<<"*";--ans[k];}
}
cout<<endl;
}
cout<<"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;
}
最离谱的是我已经完全看不懂这个数据了