#include <bits/stdc++.h>
using namespace std;
int n;
map<string, int> dy;
string T, mj[10005];
string a[4];
char ss[10005];
void fl() { fflush(stdout); }
void dfs(int x, string now) {
  mj[x] = now;
  dy[now] = x;
  if (x == n) return;
  now[0]++;
  if (now[0] == 'z' + 1) now[1]++, now[0] = 'a';
  if (now[1] == 'z' + 1) now[2]++, now[1] = 'a';
  dfs(x + 1, now);
}
string ts(string a) {
  swap(a[0], a[1]);
  swap(a[1], a[2]);
  return a;
}
int main() {
  cin >> T;
  n = T.size();
  dfs(1, "aaa");
  for (int i = 1; i <= 3; i++) {
    cout << "? ";
    string yooo;
    for (int j = 1; j <= n; j++) yooo += mj[j][i - 1];
    cout << yooo << endl;
    fl();
    cin >> a[i];
  }
  for (int i = 1; i <= n; i++) {
    string orz;
    orz.push_back((char)a[1][i - 1]);
    orz.push_back((char)a[2][i - 1]);
    orz.push_back((char)a[3][i - 1]);
    int o = dy[orz];
    ss[o - 1] += T[i - 1];
  }
  cout << "! " << ss << endl;
  fl();
}
