#include <bits/stdc++.h>
using namespace std;
// string s= "XB";
// int guesses{};
// int idx=0;
// vector<string> strings {
// "ABB", "ABX", "ABY", "AXB", "AXX", "AXY", "AYB", "AYX", "AYY",
// "BAA", "BAX", "BAY", "BXA", "BXX", "BXY", "BYA", "BYX", "BYY",
// "XAA", "XAB", "XAY", "XBA", "XBB", "XBY", "XYA", "XYB", "XYY",
// "YAA", "YAB", "YAX", "YBA", "YBB", "YBX", "YXA", "YXB", "YXX",
// };
int press(string p);
// {
// string s=strings[idx];
// guesses++;
// int ans{};
// for (auto i=0;i<p.size();i++) {
// for (auto j=i;(j<p.size())&&((j-i)<s.size())&&(p[j]==s[j-i]);j++) {
// ans=max(ans, j-i+1);
// }
// }
// return ans;
// }
string guess_sequence(int N) {
// figure out the first letter
if (N==1) {
if (press("A")==1) return "A";
else if (press("B")==1) return "B";
else if (press("X")==1) return "X";
else return "Y";
}
char first={};
auto res=press("AB");
if (res==2) {
first='A';
}
else if (res==1) {
if (press("A")==1)
first='A';
else
first='B';
}
else if (press("X"))
first='X';
else
first='Y';
string ans{};
ans+=first;
for (int i=1;i<N-1;i++) {
if (first=='A') {
string ask=ans+'X'+first+ans+"YB"+ans+"YY"+ans+"YX";
auto res=press(ask);
//cout << "i="<<i<<",ans="<<ans<<endl;
if (res==ans.size())
{
// B
ans+='B';
}
else if(res==ans.size()+1)
{
ans+='X';
}
else
{
ans+='Y';
}
}
else if (first=='B') {
string ask=ans+'X'+first+ans+"YA"+ans+"YY"+ans+"YX";
auto res=press(ask);
if (res==ans.size())
{
ans+='A';
}
else if(res==ans.size()+1)
{
ans+='X';
}
else
{
ans+='Y';
}
}
else if (first=='X') {
string ask=ans+'A'+first+ans+"YB"+ans+"YY"+ans+"YA";
auto res=press(ask);
if (res==ans.size())
{
ans+='B';
}
else if(res==ans.size()+1)
{
ans+='A';
}
else
{
ans+='Y';
}
}
else if (first=='Y') {
string ask=ans+'A'+first+ans+"XB"+ans+"XA"+ans+"XX";
auto res=press(ask);
if (res==ans.size())
{
ans+='B';
}
else if(res==ans.size()+1)
{
ans+='A';
}
else
{
ans+='X';
}
}
}
if (first=='A') {
if (press(ans+'B')==ans.size()+1) {
ans+='B';
}
else if (press(ans+'X')==ans.size()+1)
{
ans+='X';
}
else ans+='Y';
}
else if (first=='B') {
if (press(ans+'A')==ans.size()+1) {
ans+='A';
}
else if (press(ans+'X')==ans.size()+1)
{
ans+='X';
}
else ans+='Y';
}
else if (first=='X') {
if (press(ans+'B')==ans.size()+1) {
ans+='B';
}
else if (press(ans+'A')==ans.size()+1)
{
ans+='A';
}
else ans+='Y';
}
else if (first=='Y') {
if (press(ans+'B')==ans.size()+1) {
ans+='B';
}
else if (press(ans+'X')==ans.size()+1)
{
ans+='X';
}
else ans+='A';
}
return ans;
}
// auto main() -> int {
// for (auto i=0;i<strings.size();i++) {
// if (strings[i] != guess_sequence(3)) {
// cout << "ERROR: " << guess_sequence(3) << ", EXPECTED: " << strings[i] << endl;
// return 0;
// }
// else cout << "OK" << endl;
// idx++;
// }
// }