#include int main() { char S[100001]; scanf("%s", S); int i, j, k, dp[27], l, r, m; for (i = 0, dp[0] = 0, k = 0; S[i] != 0; i++) { if (S[i] == '?') continue; l = 0; r = k + 1; while (l < r) { m = (l + r) / 2; if (dp[m] < S[i] - 'a' + 1) l = m + 1; else r = m; } dp[l] = S[i] - 'a' + 1; if (l > k) k++; } if (k == 0) { for (i = 0; S[i] != 0; i++) printf("a"); printf("\n"); fflush(stdout); return 0; } for (i--, dp[0] = 30, j = 0; i >= 0; i--) { if (S[i] == '?') { if (j < k) S[i] = 'a'; else S[i] = 'a' + dp[j] - 1; } else { l = 0; r = j + 1; while (l < r) { m = (l + r) / 2; if (dp[m] > S[i] - 'a' + 1) l = m + 1; else r = m; } dp[l] = S[i] - 'a' + 1; if (l > j) j++; } } printf("%s\n", S); fflush(stdout); return 0; }