#include #include #include #include using namespace std; #define FOR(i, begin, end) for(int i=(begin),i##_end_=(end);i=i##_begin_;i--) #define REP(i, n) FOR(i,0,n) #define IREP(i, n) IFOR(i,0,n) int main() { cin.tie(nullptr), ios::sync_with_stdio(false); string Si; cin >> Si; array s; int ng = 0, ok = 27; string ret; while (ok > ng + 1) { int n = (ng + ok) / 2; auto S = Si; bool failed = false; s.fill(0); s[0] = n; IREP(i, S.size()) { auto &c = S[i]; if (c == '?') { int t = 0; while (!s[t]) t++; c = 'a' + t; } else { int j = c - 'a'; while (j >= 0 and !s[j]) j--; if (j < 0) { failed = true; break; } s[j]--; s[c - 'a']++; } } (failed ? ng : ok) = n; if (!failed) ret = S; } cout << ret << '\n'; }