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 v = 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) if query(tmp) > v: ret[idx] = chr(ord('a') + d) elif query(tmp) < v: break print('!', ''.join(ret))