#include<bits/stdc++.h>
using namespace std;
char s[29], ans[29];
int cmp['Z'+5]['Z'+5];
int cnt = 0;
// 比较两个字符,如果a>b返回true,如果a<b返回false
bool cmp_char(const char a, const char b)
{
char cp;
if(cmp[a][b] == -1)
{
printf("? %c %c\n", a, b);
fflush(stdout);
scanf(" %c", &cp);
if(cp == '>')
{
cmp[a][b] = true;
cmp[b][a] = false;
return true;
}
else
{
cmp[a][b] = false;
cmp[b][a] = true;
return false;
}
}
return cmp[a][b];
}
// N为5时,调用此方法进行排序
void sort_N5(char c)
{
if(cmp_char(c, s[1]))
{
if(cmp_char(c, s[2]))
{
s[3] = c;
}
else
{
s[3] = s[2];
s[2] = c;
}
}
else
{
if(cmp_char(c, s[0]))
{
s[3] = s[2];
s[2] = s[1];
s[1] = c;
}
else
{
s[3] = s[2];
s[2] = s[1];
s[1] = s[0];
s[0] = c;
}
}
}
// N为26时,调用此方法进行排序
void sort_N26(char c)
{
int l = 0, r = cnt;
while(l < r)
{
int mid = (l + r) >> 1;
if(cmp_char(c, ans[mid]))
{
l = mid + 1;
}
else
{
r = mid;
}
}
cnt++;
// 在新加入的c比原先的所有字符都大时,if条件成立
// 比如原先的顺序为"AB",新加和的"C"比"B"大,即"AB"变为"ABC"时
if(cmp_char(c, ans[r]))
{
r++;
}
for(int i = cnt; i >= r + 1; i--)
{
ans[i] = ans[i-1];
}
ans[r] = c;
}
int main()
{
int N, Q;
scanf("%d%d", &N, &Q);
for(int i = 0; i < 26; i++)
{
s[i] = (char)(i + 'A');
}
s[N] = '\0';
memset(cmp, -1, sizeof(cmp));
if(N == 26) // Q=1000, 或Q=100
{
cnt = 0;
ans[0] = s[0];
ans[N] = '\0';
for(int i = 1; i < N; i++)
{
sort_N26(s[i]);
}
printf("! %s\n", ans);
}
else // N=5, Q=7
{
if(cmp_char(s[0], s[1]))
{
swap(s[0], s[1]);
}
if(cmp_char(s[2], s[3]))
{
swap(s[2], s[3]);
}
if(cmp_char(s[1], s[3]))
{
swap(s[0], s[2]);
swap(s[1], s[3]);
}
/*
* 至此,s[0]<s[1], s[2]<s[3], s[1]<s[3]
* 还有两个问题:
* s[5]放哪;s[2]与s[0]、s[1]谁大谁小
*/
char temp = s[2];
if(cmp_char(s[4], s[1]))
{
// 若s[4]>s[1],则比较s[4]与s[3]
if(cmp_char(s[4], s[3]))
{
// s[4]>s[1], s[4]>s[3]
// 把0、1、2、5这四个位置填满,便于调用sort_N5()
s[2] = s[3];
}
else
{
// s[1]<s[4]<s[3]
s[2] = s[4];
s[4] = s[3];
}
}
else
{
// 若s[4]<s[1],则比较s[4]与s[0]
if(cmp_char(s[4], s[0]))
{
// s[0]<s[4]<s[1]
s[2] = s[1];
s[1] = s[4];
s[4] = s[3];
}
else
{
// s[4]<s[0]<s[1]
s[2] = s[1];
s[1] = s[0];
s[0] = s[4];
s[4] = s[3];
}
}
sort_N5(temp);
printf("! %s\n", s);
}
return 0;
}