#include <bits/stdc++.h>
using namespace std;
int n, k, x, y, sum, cnt, ans, f[30];
string str[105];
vector<string> s[105], t[105];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  cout << "? 1 " << n << endl;
  cout.flush();
  string tmp;
  for (int i = (1); i <= (n * (n + 1) / 2); i++) {
    cin >> tmp;
    sort((tmp).begin(), (tmp).end());
    s[tmp.length()].push_back(tmp);
  }
  if (n == 1) {
    cout << "! " << tmp << endl;
    return 0;
  }
  cout << "? 2 " << n << endl;
  cout.flush();
  for (int i = (1); i <= (n * (n - 1) / 2); i++) {
    cin >> tmp;
    sort((tmp).begin(), (tmp).end());
    t[tmp.length()].push_back(tmp);
  }
  for (int i = (1); i <= (n - 1); i++) {
    map<string, int> m;
    for (auto it : t[i]) {
      if (m.find(it) == m.end())
        m[it] = 1;
      else
        m[it]++;
    }
    for (auto it : s[i]) {
      if (m.find(it) == m.end())
        m[it] = -1;
      else
        m[it]--;
      if (m[it] == -1) {
        str[i] = it;
        break;
      }
    }
  }
  str[n] = s[n][0];
  string res = str[1];
  for (int i = (2); i <= (n); i++) {
    for (int j = (0); j <= (25); j++) f[j] = 0;
    for (auto it : str[i]) {
      f[it - 'a']++;
    }
    for (auto it : str[i - 1]) {
      f[it - 'a']--;
    }
    for (int j = (0); j <= (25); j++)
      if (f[j]) {
        res += (char)(j + 'a');
        break;
      }
  }
  cout << "! " << res << endl;
  cout.flush();
  return 0;
}
