#include <bits/stdc++.h>
using namespace std;
mt19937 rng32(chrono::steady_clock::now().time_since_epoch().count());
long long n, m, k, ar[200010], X[200010], Y[200010];
long long modularExponentiation(long long x, long long n) {
  if (n == 0)
    return 1;
  else if (n % 2 == 0)
    return modularExponentiation((x * x) % 1000000007, n / 2);
  else
    return (x * modularExponentiation((x * x) % 1000000007, (n - 1) / 2)) %
           1000000007;
}
long long modInverse(long long n) {
  return modularExponentiation(n, 1000000007 - 2);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int ti = 1;
  while (ti--) {
    string s, s1 = "", s2 = "", s3 = "", w, s4, s5, s6;
    map<pair<pair<char, char>, char>, long long> ma;
    w = "abcdefghijklmnopqrstuvwxyz";
    cin >> s;
    n = s.length();
    long long l = 0;
    for (long long i = 1; i < 27; i++) {
      for (long long j = 1; j < 27; j++) {
        for (long long k = 1; k < 27; k++) {
          s1 = s1 + w[i - 1];
          s2 = s2 + w[j - 1];
          s3 = s3 + w[k - 1];
          ma[make_pair(make_pair(s1[l], s2[l]), s3[l])] = l;
          l++;
        }
      }
    }
    cout << "? " << s1.substr(0, n) << endl << flush;
    cin >> s4;
    cout << "? " << s2.substr(0, n) << endl << flush;
    cin >> s5;
    cout << "? " << s3.substr(0, n) << endl << flush;
    cin >> s6;
    long long ind[200010];
    for (long long i = 0; i < n; i++) {
      ind[i] = ma[make_pair(make_pair(s4[i], s5[i]), s6[i])];
    }
    vector<char> ans(n);
    for (long long i = 0; i < n; i++) {
      ans[ind[i]] = s[i];
    }
    cout << "! ";
    for (auto i : ans) cout << i;
  }
  return 0;
}
