#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 5;
vector<int> v, v1, v2;
char ans[N], temp[N];
int main() {
  int n;
  scanf("%d", &n);
  printf("? 1 1\n");
  fflush(stdout);
  scanf("%s", temp);
  int tot = temp[0];
  ans[1] = temp[0];
  if (n == 1) {
    printf("! %s", ans + 1);
    fflush(stdout);
    return 0;
  }
  printf("? 1 %d\n", n);
  fflush(stdout);
  for (int i = 1; i <= (1 + n) * n / 2; i++) {
    scanf("%s", temp);
    int sum = 0;
    for (int j = 0; j < strlen(temp); j++) {
      sum += temp[j];
    }
    v1.push_back(sum);
  }
  printf("? 2 %d\n", n);
  fflush(stdout);
  for (int i = 1; i <= n * (n - 1) / 2; i++) {
    scanf("%s", temp);
    int sum = 0;
    for (int j = 0; j < strlen(temp); j++) {
      sum += temp[j];
    }
    v2.push_back(sum);
  }
  sort(v1.begin(), v1.end());
  sort(v2.begin(), v2.end());
  for (int i = 0, j = 0; i < v1.size(); i++) {
    if (j == v2.size()) {
      v.push_back(v1[i]);
    } else if (j < v2.size()) {
      if (v1[i] == v2[j]) {
        j++;
      } else {
        v.push_back(v1[i]);
      }
    }
  }
  for (int i = 2; i <= n; i++) {
    ans[i] = (v[i - 1] - tot);
    tot = v[i - 1];
  }
  printf("! %s", ans + 1);
  fflush(stdout);
}
