#include <bits/stdc++.h>
using namespace std;
const int MX = 1e5 + 10, MD = 1e9 + 7;
long long n, m, a[MX], ans, tmp, go[MX];
pair<pair<int, int>, int> wh[MX];
map<pair<pair<int, int>, int>, int> mp;
string s, t1, t2, t3, s1, s2, s3, str;
char c[MX];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> s;
  n = s.size();
  int flag = 0;
  for (int i = 0; i < 26; i++) {
    for (int j = 0; j < 26; j++) {
      for (int k = 0; k < 26; k++) {
        tmp++;
        wh[tmp] = {{i, j}, k};
        mp[{{i, j}, k}] = tmp;
        t1 += char(i + 'a');
        t2 += char(j + 'a');
        t3 += char(k + 'a');
        if (tmp == n) {
          flag = 1;
          break;
        }
      }
      if (flag) break;
    }
    if (flag) break;
  }
  cout << "? " << t1 << endl;
  cin >> s1;
  cout << "? " << t2 << endl;
  cin >> s2;
  cout << "? " << t3 << endl;
  cin >> s3;
  for (int i = 0; i < s1.size(); i++) {
    go[mp[{{s1[i] - 'a', s2[i] - 'a'}, s3[i] - 'a'}]] = i + 1;
  }
  for (int i = 1; i <= n; i++) {
    c[i] = s[go[i] - 1];
  }
  cout << "! ";
  for (int i = 1; i <= n; i++) cout << c[i];
}
