#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
int N, M;
int a[110];
int b[110];
int sum[110];
char ans[110];
int main() {
  string temp;
  while (~scanf("%d", &N)) {
    cout << "? 1 " << N << endl;
    cout.flush();
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    memset(sum, 0, sizeof(sum));
    if (N == 1) {
      cin >> temp;
      cout << "! " << temp << endl;
      cout.flush();
    } else {
      for (int i = N * (N + 1) / 2; i > 0; i--) {
        cin >> temp;
        for (int j = 0; j < temp.size(); j++) {
          a[temp.size()] += temp[j] - 'a';
        }
      }
      cout << "? 1 " << N - 1 << endl;
      cout.flush();
      for (int i = N * (N - 1) / 2; i > 0; i--) {
        cin >> temp;
        for (int j = 0; j < temp.size(); j++) {
          b[temp.size()] += temp[j] - 'a';
        }
      }
      for (int i = 1; i <= N; i++) {
        sum[i] = a[i] - b[i];
        ans[N - i] = sum[i] - sum[i - 1] + 'a';
      }
      ans[N] = '\0';
      printf("! %s\n", ans);
      cout.flush();
    }
  }
  return 0;
}
