#include <bits/stdc++.h>
char s[10010], t[10010], ans[10010];
int from[3][10010];
int main() {
  scanf("%s", s + 1);
  int n = strlen(s + 1);
  int p = ceil(n / 25.0);
  int q = ceil(p / 25.0);
  int u = ceil(q / 25.0);
  printf("? ");
  for (int i = 1; i <= n; ++i) printf("%c", 'a' + (i - 1) / p);
  puts("");
  fflush(stdout);
  scanf("%s", t + 1);
  for (int i = 1; i <= n; ++i) from[0][i] = t[i] - 'a';
  printf("? ");
  for (int i = 1; i <= n; i += p)
    for (int j = i; j <= n && j < i + p; ++j) printf("%c", 'a' + (j - i) / q);
  puts("");
  fflush(stdout);
  scanf("%s", t + 1);
  for (int i = 1; i <= n; ++i) from[1][i] = t[i] - 'a';
  printf("? ");
  for (int i = 1; i <= n; i += p)
    for (int j = i; j <= n && j < i + p; j += q)
      for (int k = j; k <= n && k < j + q; ++k) printf("%c", 'a' + (k - j) / u);
  puts("");
  fflush(stdout);
  scanf("%s", t + 1);
  for (int i = 1; i <= n; ++i) from[2][i] = t[i] - 'a';
  for (int i = 1; i <= n; ++i)
    ans[from[0][i] * p + from[1][i] * q + from[2][i] * u + 1] = s[i];
  ans[n + 1] = '\0';
  printf("! %s\n", ans + 1);
  puts("");
  fflush(stdout);
  return 0;
}
