#include <bits/stdc++.h>
using namespace std;
char str[1111];
multiset<string> ask(int l, int r) {
  printf("? %d %d\n", l, r);
  fflush(0);
  multiset<string> ret;
  int n = r - l + 1;
  for (int i = 0; i < n * (n + 1) / 2; ++i) {
    scanf("%s", str);
    sort(str, str + strlen(str));
    ret.insert(str);
  }
  return ret;
}
void print(string res) {
  printf("! %s\n", res.c_str());
  fflush(0);
  exit(0);
}
int main() {
  int n;
  scanf("%d", &n);
  auto A = ask(1, n);
  if (A.size() == 1) print(*A.begin());
  auto B = ask(2, n);
  for (auto x : B) A.erase(A.find(x));
  int f[101][128] = {};
  for (auto &s : A)
    for (auto x : s) ++f[s.size()][x];
  string res = "";
  for (int i = n; i > 0; --i)
    for (int j = 0; j < 128; ++j)
      if (f[i][j] > f[i - 1][j]) {
        res += char(j);
        break;
      }
  reverse(res.begin(), res.end());
  print(res);
  return 0;
}
