#include<bits/stdc++.h>
using namespace std;
char s[200000],m[200000];
int n,cnt,cntc;
char c[10000];
char t[30]={'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'};
bool one(char a,char b,char c){
if(a=='1'&&b=='0'&&c=='1'){
return true;
}
return false;
}
bool two(char a,char b,char c){
if(a=='1'&&b=='1'&&c=='1'){
return true;
}
return false;
}
bool three(char a){
if(a=='0'){
return true;
}
return false;
}
int mi(int a,int b){
int num=1;
for(int i=1;i<=b;i++){
num*=a;
}
return num;
}
void add(int num){
if(num<10){
c[1]=(num+'0');
cntc=1;
}else{
if(num<100){
c[1]=(num/10+'0');
c[2]=(num%10+'0');
cntc=2;
}else{
if(num<1000){
c[1]=(num/100+'0');
c[2]=(num%100/10+'0');
c[3]=(num%100%10+'0');
cntc=3;
}
}
}
}
int main(){
cin>>s;
n=strlen(s);
if(n%8!=0){
cout<<"Error";
return 0;
}
for(int i=0;i<n;i++){
if(s[i]>'1'||s[i]<'0'){
cout<<"Error";
return 0;
}
}
for(int i=1;i<=n/8;i++){
if(one(s[i*8-8],s[i*8-7],s[i*8-6])){
int num=0;
for(int j=i*8-1,k=0;j>=i*8-5;j--,k++){
num+=int(s[j]-'0')*mi(2,k);
}
if(num>=26){
cout<<"Error";
return 0;
}
m[++cnt]=t[num];
}
if(two(s[i*8-8],s[i*8-7],s[i*8-6])){
m[++cnt]=' ';
}
if(three(s[i*8-8])){
if(three(s[(i+1)*8-8])){
int num=0;
for(int j=i*8-1,k=0;j>=i*8-5;j--,k++){
num+=int(s[j]-'0')*mi(2,k);
}
int sum=0;
for(int j=(i+1)*8-1,k=0;j>=(i+1)*8-5;j--,k++){
sum+=int(s[j]-'0')*mi(2,k);
}
int ans;
ans=num/2+sum/2;
add(ans);
for(int j=1;j<=cntc;j++){
m[++cnt]=c[j];
}
i++;
}else{
cout<<"Error";
return 0;
}
}
}
for(int i=1;i<=cnt;i++){
cout<<m[i];
}
return 0;
}