#include <bits/stdc++.h>
char S[10010];
char G[10010];
char A[3][10010];
void make(int cnt, int len) {
  char z = 'a';
  int c = 0;
  for (int i = 0; i < len; ++i) {
    G[i] = z;
    ++c;
    if (c == cnt) {
      c = 0;
      ++z;
      if (z > 'z') z = 'a';
    }
  }
}
int P[10040];
char R[10040];
void solve() {
  scanf("%s", S);
  int len = strlen(S);
  make(1, len);
  printf("? %s\n", G);
  fflush(stdout);
  scanf("%s", A[0]);
  make(26, len);
  printf("? %s\n", G);
  fflush(stdout);
  scanf("%s", A[1]);
  make(26 * 26, len);
  printf("? %s\n", G);
  fflush(stdout);
  scanf("%s", A[2]);
  for (int i = 0; i < len; ++i) {
    P[i] = int(A[0][i] - 'a') + int(A[1][i] - 'a') * 26 +
           int(A[2][i] - 'a') * 26 * 26;
  }
  for (int i = 0; i < len; ++i) {
    R[P[i]] = S[i];
  }
  printf("! %s\n", R);
  fflush(stdout);
}
int main() {
  solve();
  return 0;
}
