#include <bits/stdc++.h>
using namespace std;
vector<string> vec[105];
map<string, int> mp, mp1;
string ans;
int n;
void solve() {
  ans.resize(n);
  int res = 0;
  for (int i = 1; i <= n; ++i) {
    mp1.clear();
    string tmp;
    for (int j = 0; j < vec[i].size(); ++j) {
      mp1[vec[i][j]]++;
    }
    for (int j = 0; j < vec[i].size(); ++j) {
      if (mp.find(vec[i][j]) == mp.end() || mp[vec[i][j]] != mp1[vec[i][j]]) {
        tmp = vec[i][j];
      }
    }
    int sum = 0;
    for (int i = 0; i < tmp.size(); ++i) {
      sum += (tmp[i] - 'a');
    }
    ans[i - 1] = sum - res + 'a';
    res = sum;
  }
  cout << "! " << ans << endl;
}
int main() {
  cin >> n;
  string s;
  if (n == 1) {
    cout << "? 1 1" << endl;
    cin >> s;
    cout << "! " << s << endl;
  } else {
    cout << "? 1 " << n << endl;
    for (int i = 0; i < n * (n + 1) / 2; ++i) {
      cin >> s;
      sort(s.begin(), s.end());
      vec[s.size()].push_back(s);
    }
    cout << "? 2 " << n << endl;
    for (int i = 0; i < n * (n - 1) / 2; ++i) {
      cin >> s;
      sort(s.begin(), s.end());
      mp[s]++;
    }
    solve();
  }
  return 0;
}
