#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const long long oo = 1e16;
const int mod = 1e9 + 7;
map<string, int> mp;
bool cmp(string a, string b) {
  if (a.size() == b.size()) return a < b;
  return a.size() < b.size();
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int n;
  cin >> n;
  cout << "? " << 1 << ' ' << n << endl;
  if (n == 1) {
    string cur;
    cin >> cur;
    cout << "! " << cur << endl;
    return 0;
  }
  vector<string> x;
  for (int i = 0; i < n * (n + 1) / 2; ++i) {
    string cur;
    cin >> cur;
    sort(cur.begin(), cur.end());
    x.push_back(cur);
  }
  sort(x.begin(), x.end(), cmp);
  cout << "? " << 2 << ' ' << n << endl;
  for (int i = 0; i < n * (n - 1) / 2; ++i) {
    string cur;
    cin >> cur;
    sort(cur.begin(), cur.end());
    mp[cur]++;
  }
  vector<int> lst(30, 0);
  string ans = "";
  for (auto i : x) {
    if (mp[i] == 0) {
      vector<int> ac(30);
      for (auto j : i) ac[j - 'a']++;
      for (int j = 0; j < 30; ++j) {
        if (ac[j] > lst[j]) ans.push_back(char(j + 'a'));
      }
      swap(lst, ac);
    } else
      mp[i]--;
  }
  cout << "! " << ans << endl;
  return 0;
}
