#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<cstdio>
#include<cstring>
#include<cstdio>
using namespace std;

#define rep(i,n) for(int i = 0;i<n;i++)
#define REP(n) rep(i,n)
#define foreach(p,t,r) for(p<t>::iterator it = r.begin();it!=r.end();++it)
#define all(n) n.begin(),n.end()

int main()
{
    map<char, string> stod;
    typedef pair<char, string> pp;
    stod.insert(pp(' ', "101"));
    stod.insert(pp('\'', "000000"));
    stod.insert(pp(',',"000011"));
    stod.insert(pp('-', "10010001"));
    stod.insert(pp('.', "010001"));
    stod.insert(pp('\?', "000001"));
    stod.insert(pp('A', "100101"));
    stod.insert(pp('B', "10011010"));
    stod.insert(pp('C', "0101"));
    stod.insert(pp('D', "0001"));
    stod.insert(pp('E', "110"));
    stod.insert(pp('F', "01001"));
    stod.insert(pp('G', "10011011"));
    stod.insert(pp('H', "010000"));
    stod.insert(pp('I', "0111"));
    stod.insert(pp('J', "10011000"));
    stod.insert(pp('K', "0110"));
    stod.insert(pp('L', "00100"));
    stod.insert(pp('M', "10011001"));
    stod.insert(pp('N', "10011110"));
    stod.insert(pp('O', "00101"));
    stod.insert(pp('P', "111"));
    stod.insert(pp('Q', "10011111"));
    stod.insert(pp('R', "1000"));
    stod.insert(pp('S', "00110"));
    stod.insert(pp('T', "00111"));
    stod.insert(pp('U', "10011100"));
    stod.insert(pp('V', "10011101"));
    stod.insert(pp('W', "000010"));
    stod.insert(pp('X', "10010010"));
    stod.insert(pp('Y', "10010011"));
    stod.insert(pp('Z', "10010000"));
/*    for(map<char, string>::iterator it = stod.begin();it!=stod.end();++it)
        cout << (*it).first << " " << (*it).second << endl;*/
    map<string, char> dtos;
    typedef pair<string, char> p;
    dtos.insert(p("00000", 'A'));
    dtos.insert(p("00001", 'B'));
    dtos.insert(p("00010", 'C'));
    dtos.insert(p("00011", 'D'));
    dtos.insert(p("00100", 'E'));
    dtos.insert(p("00101", 'F'));
    dtos.insert(p("00110", 'G'));
    dtos.insert(p("00111", 'H'));
    dtos.insert(p("01000", 'I'));
    dtos.insert(p("01001", 'J'));
    dtos.insert(p("01010", 'K'));
    dtos.insert(p("01011", 'L'));
    dtos.insert(p("01100", 'M'));
    dtos.insert(p("01101", 'N'));
    dtos.insert(p("01110", 'O'));
    dtos.insert(p("01111", 'P'));
    dtos.insert(p("10000", 'Q'));
    dtos.insert(p("10001", 'R'));
    dtos.insert(p("10010", 'S'));
    dtos.insert(p("10011", 'T'));
    dtos.insert(p("10100", 'U'));
    dtos.insert(p("10101", 'V'));
    dtos.insert(p("10110", 'W'));
    dtos.insert(p("10111", 'X'));
    dtos.insert(p("11000", 'Y'));
    dtos.insert(p("11001", 'Z'));
    dtos.insert(p("11010", ' '));
    dtos.insert(p("11011", '.'));
    dtos.insert(p("11100", ','));
    dtos.insert(p("11101", '-'));
    dtos.insert(p("11110", '\''));
    dtos.insert(p("11111", '\?'));

    /*for(map<string, char>::iterator it = dtos.begin();it!=dtos.end();++it)
        cout << (*it).first << " " << (*it).second << endl;*/
    
    string s;
    while(getline(cin, s))
    {
        string d;
        REP(s.size()) d += stod[s[i]];

        while(d.size() % 5) d += "0";

        string ans;
        REP(d.size() / 5)
            ans += dtos[d.substr(i*5, 5)];

        cout << ans << endl;

    }
    return 0;
}

Measured memory_bytes: 1212