#include <bits/stdc++.h>
using namespace std;
void no() {
  cout << "NO\n";
  exit(0);
}
void yes() { cout << "YES\n"; }
int nxt() {
  int x;
  cin >> x;
  return x;
}
void query(vector<int> &a, vector<int> &res) {
  int n = ((long long)a.size());
  cout << "? ";
  for (int i = (int)0; i < (int)n; i++) cout << char(a[i] + 'a');
  cout << endl;
  string s;
  cin >> s;
  for (int i = (int)0; i < (int)n; i++) {
    res[i] = res[i] * 26 + (s[i] - 'a');
  }
}
void solve() {
  string s;
  cin >> s;
  int n = ((long long)s.size());
  map<int, int> mp;
  int it = 0;
  vector<int> a, b, c;
  for (int i = (int)0; i < (int)26; i++)
    for (int j = (int)0; j < (int)26; j++)
      for (int k = (int)0; k < (int)26; k++) {
        if (it >= n) continue;
        a.push_back(i), b.push_back(j), c.push_back(k);
        mp[26 * 26 * i + 26 * j + k] = it++;
      }
  42;
  vector<int> res(n);
  query(a, res);
  query(b, res);
  query(c, res);
  string ans = s;
  for (int i = (int)0; i < (int)n; i++) {
    int x = mp[res[i]];
    ans[x] = s[i];
  }
  cout << "! " << ans << "\n";
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  for (int tc = 1; tc <= t; tc++) {
    solve();
  }
}
