#include <bits/stdc++.h>
using namespace std;
int n;
map<string, int> m;
map<char, int> m1, m2;
vector<string> s;
vector<char> ans;
inline bool mycmp(string a, string b) { return a.size() < b.size(); }
int main() {
  cin >> n;
  if (n == 1) {
    char ch;
    cout << "?" << ' ' << 1 << ' ' << 1 << '\n';
    cin >> ch;
    cout << "!" << ' ' << ch << '\n';
    return 0;
  }
  cout << "?" << ' ' << 1 << ' ' << n - 1 << '\n';
  for (int i = 1; i <= (n - 1) * n / 2; i++) {
    string t;
    cin >> t;
    sort(t.begin(), t.end());
    m[t]++;
  }
  cout << "?" << ' ' << 1 << ' ' << n << '\n';
  for (int i = 1; i <= n * (n + 1) / 2; i++) {
    string t;
    cin >> t;
    sort(t.begin(), t.end());
    if (!m[t])
      s.push_back(t);
    else
      m[t]--;
  }
  sort(s.begin(), s.end(), mycmp);
  for (int i = 0; i < s.size(); i++) {
    m1 = m2;
    for (int j = 0; j < s[i].size(); j++) {
      if (m1[s[i][j]])
        m1[s[i][j]]--;
      else
        m2[s[i][j]]++, ans.push_back(s[i][j]);
    }
  }
  cout << "! ";
  for (int i = ans.size() - 1; i >= 0; i--) cout << ans[i];
  cout << '\n';
  return 0;
}
