using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var r = new Random(); var init = new char[n]; for (var i = 0; i < n; ++i) init[i] = (char)(r.Next(26) + 'a'); var ix = Q(init); var ans = (char[]) init.Clone(); for (var i = 0; i < n; ++i) { for (var j = 'a'; j <= 'z'; ++j) { if (j == init[i]) continue; var tmp = init[i]; init[i] = j; var nx = Q(init); init[i] = tmp; if (nx < ix) break; if (nx > ix) { ans[i] = j; break; } } } WriteLine($"! {string.Concat(ans)}"); } static int Q(char[] s) { WriteLine($"? {string.Concat(s)}"); return NN; } }