#include <bits/stdc++.h>
using namespace std;
int n;
multiset<string> v[104];
int main() {
  cin >> n;
  cout << "? " << 1 << " " << n << endl;
  for (int i = 0; i < n * (n + 1) / 2; i++) {
    string s;
    cin >> s;
    sort(s.begin(), s.end());
    v[s.size()].insert(s);
  }
  if (n > 1) {
    cout << "? " << 2 << " " << n << endl;
    for (int i = 0; i < n * (n - 1) / 2; i++) {
      string s;
      cin >> s;
      sort(s.begin(), s.end());
      v[s.size()].erase(v[s.size()].lower_bound(s));
    }
  }
  string ans = *v[1].begin();
  for (int i = 2; i <= n; i++) {
    int cnt[26] = {};
    for (char c : *v[i].begin()) cnt[c - 'a']++;
    for (char c : *v[i - 1].begin()) cnt[c - 'a']--;
    for (int i = 0; i < 26; i++)
      if (cnt[i]) ans.push_back((char)(i + 'a'));
  }
  cout << "! " << ans << endl;
}
