#include <bits/stdc++.h>
using namespace std;
int n;
multiset<string> a, b;
int main() {
  cin >> n;
  cout << "? 1 " << n << '\n';
  cout.flush();
  for (int i = 0; i < ((n + 1) * n) / 2; i++) {
    string s;
    cin >> s;
    sort(s.begin(), s.end());
    a.insert(s);
  }
  if (n == 1) {
    cout << "! " << (*(a.begin()));
    cout.flush();
    return 0;
  }
  cout << "? 2 " << n << '\n';
  cout.flush();
  for (int i = 0; i < ((n - 1) * n) / 2; i++) {
    string s;
    cin >> s;
    sort(s.begin(), s.end());
    b.insert(s);
  }
  vector<int> me;
  for (auto i : a) {
    if (b.find(i) != b.end()) {
      b.erase(b.find(i));
    } else {
      int sum = 0;
      for (auto j : i) {
        sum += j - 'a';
      }
      me.push_back(sum);
    }
  }
  sort(me.begin(), me.end());
  for (int i = n - 1; i >= 1; i--) me[i] -= me[i - 1];
  string ans = "";
  for (int i = 0; i < n; i++) ans.push_back(me[i] + 'a');
  cout << "! " << ans;
  cout.flush();
}
