#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ul = unsigned long long;
using ld = long double;
vector<string> q(int l, int r) {
  if (l == r) return {};
  int d = r - l;
  cout << "? " << l + 1 << ' ' << r << endl;
  vector<string> ans(d * (d + 1) / 2);
  for (int i = 0; i < (d * (d + 1) / 2); i++) {
    cin >> ans[i];
    sort((ans[i]).begin(), (ans[i]).end());
  }
  return ans;
}
int main() {
  int n;
  cin >> n;
  vector<string> a = q(0, n), b = q(1, n);
  multiset<string> ss;
  for (string i : a) ss.insert(i);
  for (string i : b) ss.erase(ss.find(i));
  vector<string> d(n + 1);
  for (string i : ss) d[i.size()] = i;
  cout << "! ";
  for (int i = 0; i < (n); i++) {
    multiset<char> ms;
    for (char c : d[i + 1]) ms.insert(c);
    for (char c : d[i]) ms.erase(ms.find(c));
    cout << *ms.begin();
  }
  cout << endl;
}
