#include <iostream>
#include <bitset>
#include <string>
// a = AAAAA -> 00000 -> 0
// b = AAAAB -> 00001 -> 1
// c = AAABA -> 00010 -> 2
// d = AAABB -> 00011 -> 3
// e = AABAA -> 00100 -> 4
// f = AABAB -> 00101 -> 5
// g = AABBA -> 00110 -> 6
std::string toAB(int n) {
std::bitset<5> bits(n);
std::string out;
for (int i = 4; i >= 0; --i) {
out += bits[i] ? 'B' : 'A';
}
return out;
}
int main() {
for (char ch = 'a'; ch <= 'z'; ++ch) {
int value = ch - 'a'; // a=0, b=1, c=2...
std::string code = toAB(value);
std::cout << ch << " -> " << value << " -> " << code << "\n";
}
}
/*
run:
a -> 0 -> AAAAA
b -> 1 -> AAAAB
c -> 2 -> AAABA
d -> 3 -> AAABB
e -> 4 -> AABAA
f -> 5 -> AABAB
g -> 6 -> AABBA
h -> 7 -> AABBB
i -> 8 -> ABAAA
j -> 9 -> ABAAB
k -> 10 -> ABABA
l -> 11 -> ABABB
m -> 12 -> ABBAA
n -> 13 -> ABBAB
o -> 14 -> ABBBA
p -> 15 -> ABBBB
q -> 16 -> BAAAA
r -> 17 -> BAAAB
s -> 18 -> BAABA
t -> 19 -> BAABB
u -> 20 -> BABAA
v -> 21 -> BABAB
w -> 22 -> BABBA
x -> 23 -> BABBB
y -> 24 -> BBAAA
z -> 25 -> BBAAB
*/