#include using namespace std; using ll = long long; #define rep(i, a, b) for (ll i = (a); i < (ll)(b); i++) #define all(x) x.begin(), x.end() void solve() { int N, M; cin >> N >> M; string S, T; cin >> S >> T; string ans = S; // Warong if (T.compare("Warong") == 0) { // Sample: all 'A' rep(i, 0, M) { ans[i] = 'A'; } // Testcase: 'W' が 0 個で '?' が 1 個のときのみ確定 int wcnt = 0, ncnt = 0; rep(i, M, N) { wcnt += (S[i] == 'W' ? 1 : 0); ncnt += (S[i] == '?' ? 1 : 0); } if (wcnt == 0 && ncnt == 1) { rep(i, M, N) { if (S[i] == '?') ans[i] = 'W'; } } cout << ans << '\n'; return; } // NotWarong int acnt1 = 0, acnt2 = 0, wcnt1 = 0, wcnt2 = 0, ncnt1 = 0, ncnt2 = 0; rep(i, 0, M) { acnt1 += (S[i] == 'A' ? 1 : 0); wcnt1 += (S[i] == 'W' ? 1 : 0); ncnt1 += (S[i] == '?' ? 1 : 0); } rep(i, M, N) { acnt2 += (S[i] == 'A' ? 1 : 0); wcnt2 += (S[i] == 'W' ? 1 : 0); ncnt2 += (S[i] == '?' ? 1 : 0); } // Sample が全部 'A' のとき、AC if (acnt1 == M) { rep(i, 0, N) { ans[i] = 'A'; } cout << ans << '\n'; return; } // WA // Testcase が全部 'A' のとき: Sample は 'W' を含む if (acnt2 == N - M && wcnt1 == 0 && ncnt1 == 1) { rep(i, 0, M) { if (S[i] == '?') ans[i] = 'W'; } } // Testcase が 'W' を含むとき: Sample は 'W' を含む if (wcnt1 == 0 && wcnt2 > 0 && ncnt1 == 1 && ncnt2 == 0) { rep(i, M, N) { if (S[i] == '?') ans[i] = 'W'; } } cout << ans << '\n'; return; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; // cin >> T; while (T--) { solve(); } }