#include <bits/stdc++.h>
using namespace std;
long long md = 1000000007;
map<char, int> make_pair;
int main() {
  string s;
  cin >> s;
  map<pair<pair<int, int>, int>, int> make_pair;
  vector<vector<int> > tup(3);
  int ind = 0;
  for (int i = 0; i < (int)26; i++) {
    for (int j = 0; j < (int)26; j++) {
      for (int k = 0; k < (int)26; k++) {
        if (ind < (int)(s.size())) {
          ind++;
          tup[0].emplace_back(i);
          tup[1].emplace_back(j);
          tup[2].emplace_back(k);
          make_pair[{{i, j}, k}] = (int)(tup[0].size()) - 1;
        }
      }
    }
  }
  vector<vector<int> > tup2(3);
  for (int lvl = 0; lvl < (int)3; lvl++) {
    cout << "? ";
    for (int i : tup[lvl]) cout << (char)(i + 'a');
    cout << endl;
    string temp;
    cin >> temp;
    for (char c : temp) tup2[lvl].emplace_back(c - 'a');
  }
  string ans = s;
  for (int i = 0; i < (int)(s.size()); i++) {
    int loc = make_pair[{{tup2[0][i], tup2[1][i]}, tup2[2][i]}];
    ans[loc] = s[i];
  }
  cout << "! " << ans << endl;
}
