import numpy as np np.random.seed(998998) def query(s: list[str]) -> int: print('?', ''.join(s)) return int(input()) N = int(input()) ret = ['a'] * N ff = query(['a'] * N) for idx in range(N): qs = list(range(1, 26)) np.random.shuffle(qs) for d in qs: tmp = ['a'] * N tmp[idx] = chr(ord('a') + d) q = query(tmp) if q > ff: ret[idx] = chr(ord('a') + d) break elif q < ff: break print('!', ''.join(ret))