#include <bits/stdc++.h>
using namespace std;
char s[110];
int main() {
  int n;
  scanf("%d", &n);
  printf("? 1 %d\n", n);
  fflush(stdout);
  map<vector<int>, int> Q1[n + 1];
  for (int i = 0; i < n * (n + 1) / 2; i++) {
    scanf("%s", s);
    vector<int> cnt(26, 0);
    for (int i = 0; s[i]; i++) {
      cnt[s[i] - 'a']++;
    }
    Q1[strlen(s)][cnt]++;
  }
  if (n == 1) {
    printf("! %s\n", s);
    fflush(stdout);
    return 0;
  }
  printf("? 2 %d\n", n);
  fflush(stdout);
  map<vector<int>, int> Q2[n + 1];
  for (int i = 0; i < n * (n - 1) / 2; i++) {
    scanf("%s", s);
    vector<int> cnt(26, 0);
    for (int i = 0; s[i]; i++) {
      cnt[s[i] - 'a']++;
    }
    Q2[strlen(s)][cnt]++;
  }
  for (int len = 1; len <= n; len++) {
    for (auto x : Q1[len]) {
      if (Q2[len][x.first] == x.second) continue;
      vector<int> cnt = x.first;
      for (int i = 0; i < len - 1; i++) {
        cnt[s[i] - 'a']--;
      }
      char ch = 'a';
      while (!cnt[ch - 'a']) ch++;
      s[len - 1] = ch;
      break;
    }
  }
  s[n] = 0;
  printf("! %s\n", s);
  fflush(stdout);
}
