import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random sys.setrecursionlimit(10**9) #sys.set_int_max_str_digits(0) n = int(input()) print('?','z'*n,flush=True) z = int(input()) if z == n: print('!','z'*n,flush=True) exit() ans = ['' for i in range(n)] for i in range(n): temp = ['z' for i in range(n)] for j in range(25): temp[i] = chr(j + ord('a')) print('?',''.join(temp),flush=True) x = int(input()) if x == z-1: ans[i] = 'z' break if x == z +1: ans[i] = temp[i] break print('!',''.join(ans))