#include <bits/stdc++.h>
template <class T>
T round_up(T num, T den) {
  return num / den + ((num % den != 0) & ((num < 0) ^ (den > 0)));
}
std::string query(std::string s) {
  std::cout << "? " << s << std::endl;
  std::string t;
  std::cin >> t;
  return t;
}
int main() {
  std::string t;
  std::cin >> t;
  const int n = int(t.size());
  std::map<char, std::map<char, std::map<char, int>>> rev;
  int n1 = round_up(n, 26), n2 = round_up(n1, 26), n3 = round_up(n2, 26);
  std::string s1(n, ' '), s2(n, ' '), s3(n, ' ');
  for (int i = 0; i < n; i++) {
    s1[i] = char('a' + (i / n1));
    s2[i] = char('a' + (i % n1 / n2));
    s3[i] = char('a' + (i % n1 % n2 / n3));
    rev[s1[i]][s2[i]][s3[i]] = i;
  }
  std::string t1 = query(s1), t2 = query(s2), t3 = query(s3);
  std::string s(n, ' ');
  for (int i = 0; i < n; i++) {
    s[rev[t1[i]][t2[i]][t3[i]]] = t[i];
  }
  std::cout << "! " << s << std::endl;
}
