#include <bits/stdc++.h>
using namespace std;
int sum[30], res[30], num[30];
map<string, int> ma, ma1;
vector<string> s[1000000], ss[1000000];
int main() {
  int n;
  cin >> n;
  if (n == 1) {
    cout << "? 1 1"
         << "\n";
    fflush(stdout);
    string s3;
    cin >> s3;
    fflush(stdout);
    cout << "! " << s3;
    return 0;
  }
  cout << "? 1 " << n << "\n";
  fflush(stdout);
  for (int i = (0); i < (n * (n + 1) / 2); i++) {
    string sss;
    cin >> sss;
    for (int j = (0); j < (sss.size()); j++) {
      num[sss[j] - 'a']++;
    }
    string s1 = "";
    for (int j = (0); j < (26); j++) {
      while (num[j]) {
        s1 += (char)(j + 'a');
        num[j]--;
      }
    }
    s[s1.size()].push_back(s1);
    ma[s1]++;
  }
  fflush(stdout);
  cout << "? 2 " << n << "\n";
  fflush(stdout);
  for (int i = (0); i < ((n - 1) * (n) / 2); i++) {
    string sss;
    cin >> sss;
    for (int j = (0); j < (sss.size()); j++) {
      num[sss[j] - 'a']++;
    }
    string s1 = "";
    for (int j = (0); j < (26); j++) {
      while (num[j]) {
        s1 += (char)(j + 'a');
        num[j]--;
      }
    }
    ss[s1.size()].push_back(s1);
    ma1[s1]++;
  }
  fflush(stdout);
  string ans = "";
  for (int i = (1); i < (n + 1); i++) {
    int len = s[i].size();
    for (int j = (0); j < (len); j++) {
      if (ma[s[i][j]] != ma1[s[i][j]]) {
        memset(res, 0, sizeof(res));
        memset(sum, 0, sizeof(sum));
        for (int k = (0); k < (i); k++) {
          res[s[i][j][k] - 'a']++;
        }
        for (int k = (0); k < (i - 1); k++) {
          sum[ans[k] - 'a']++;
        }
        for (int k = (0); k < (26); k++) {
          if (res[k] != sum[k]) {
            ans += (char)('a' + k);
            break;
          }
        }
        break;
      }
    }
  }
  cout << "! " << ans << "\n";
  return 0;
}
