#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
string s;
queue<char> q;
int last=-1;
void get1(int i){
int x=(s[i+7]-'0')*1+(s[i+6]-'0')*2+(s[i+5]-'0')*4+(s[i+4]-'0')*8+(s[i+3]-'0')*16;
if(x>25){
cout<<"Error";
exit(0);
}
q.push((x+'A'));
}
void get2(int i){q.push('#');}
void get3(int i){
int x=(s[i+7]-'0')*1+(s[i+6]-'0')*2+(s[i+5]-'0')*4+(s[i+4]-'0')*8+(s[i+3]-'0')*16+(s[i+2]-'0')*32+(s[i+1]-'0')*64+(s[i]-'0')*128;
if(last==-1)last=x;
else{
int s=last/2+x/2,res=0;
if(s==0)q.push('0');
else{
while(s>0){
res=res*10+s%10;
s=s/10;
}
while(res>0){
q.push(('0'+res%10));
res/=10;
}
}
last=-1;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>s;int n=s.size();
if(n%8!=0)return puts("Error"),0;
for(int i=0;i<n;i++){
if(s[i]!='1'&&s[i]!='0')
return puts("Error"),0;
}
for(int i=0;i<n;i+=8){
if(last!=-1&&s[i]!='0')return puts("Error"),0;
if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='1')get1(i);
else if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='1')get2(i);
else if(s[i]=='0')get3(i);
else return puts("Error"),0;
}
if(last!=-1)return puts("Error"),0;
while(q.size()){
if(q.front()=='#')cout<<" ";
else cout<<q.front();
q.pop();
}
return 0;
}