#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
 
using namespace std;
 
#define pb(n)	push_back(n)
#define mp(n,m) make_pair(n,m)
#define fi 	first
#define se 	second
#define all(r) (r).begin(),(r).end()

#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,a,b) for(int i=(a); i<(b); i++)

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
 
const int IMAX=((1<<30)-1)*2+1;
const double EPS=1e-10;
//int mod=1000000007



string s;

int main(){
	for(int i=0; i<32; i++){
		if(i<26)s+=('A'+i);
		if(i==26)s+=(' ');
		if(i==27)s+='.';
		if(i==28)s+=',';
		if(i==29)s+='-';
		if(i==30)s+='\'';
		if(i==31)s+='?';
	}
	map<char,string> m;
	m[' ']="101";
	m['\'']="000000";
	m[',']="000011";
	m['-']="10010001";
	m['.']="010001";
	m['?']="000001";
	m['A']="100101";
	m['B']="10011010";
	m['C']="0101";
	m['D']="0001";
	m['E']="110";
	m['F']="01001";
	m['G']="10011011";
	m['H']="010000";
	m['I']="0111";
	m['J']="10011000";
	m['K']="0110";
	m['L']="00100";
	m['M']="10011001";
	m['N']="10011110";
	m['O']="00101";
	m['P']="111";
	m['Q']="10011111";
	m['R']="1000";
	m['S']="00110";
	m['T']="00111";
	m['U']="10011100";
	m['V']="10011101";
	m['W']="000010";
	m['X']="10010010";
	m['Y']="10010011";
	m['Z']="10010000";
	string t;
	while(getline(cin,t)){
		string u,ans;
		rep(i,t.size()){
			u+=m[t[i]];
		}
		while(u.size()%5!=0)u+='0';
		//cout<<u<<endl;
		for(int i=0; i<u.size(); i+=5){
			string v;
			int n=0;
			v=u.substr(i,5);
			//cout<<v<<"=";
			rep(j,5){
				n*=2;
				n+=(v[j]-'0');
				//cout<<n<<endl;
			}
			//cout<<n<<endl;
			ans+=s[n];
			//cout<<ans<<endl;
		}
		cout<<ans<<endl;
	}
}