#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10200;
string genA() {
  string ans(MAXN, '.');
  for (int i = 0, ThxDem = MAXN; i < ThxDem; ++i) ans[i] = i % 26 + 'a';
  return ans;
}
string genB() {
  string ans(MAXN, '.');
  for (int i = 0, ThxDem = MAXN; i < ThxDem; ++i) {
    int v = i / 26;
    ans[i] = v % 26 + 'a';
  }
  return ans;
}
string genC() {
  string ans(MAXN, '.');
  for (int i = 0, ThxDem = MAXN; i < ThxDem; ++i) {
    int v = i / 676;
    ans[i] = v % 26 + 'a';
  }
  return ans;
}
int n;
string T;
string ask(string S) {
  cout << "? " << S << endl;
  fflush(stdout);
  cin >> S;
  return S;
}
int main() {
  ios::sync_with_stdio(false);
  string A = genA(), B = genB(), C = genC();
  while (cin >> T) {
    n = T.size();
    A.resize(n);
    B.resize(n);
    C.resize(n);
    string TA = ask(A), TB = ask(B), TC = ask(C);
    string Ans(n, '.');
    for (int i = 0, ThxDem = n; i < ThxDem; ++i) {
      int p = (TA[i] - 'a') + 26 * (TB[i] - 'a') + 676 * (TC[i] - 'a');
      Ans[p] = T[i];
    }
    cout << "! " << Ans << endl;
  }
  return 0;
}
