#include <bits/stdc++.h>
using namespace std;
const int M = 1005;
int n, k;
string second;
bool dp[M][2 * M], visit[M][2 * M];
int path[M][2 * M];
bool can(int i, int balance) {
  if (i == n) {
    return balance == k || (abs(balance - M) == k - M);
  }
  if (balance >= k || abs(balance - M) >= k - M) return 0;
  if (visit[i][balance]) return dp[i][balance];
  visit[i][balance] = 1;
  if (second[i] == 'W') {
    return dp[i][balance] = can(i + 1, balance + 1);
  } else if (second[i] == 'L') {
    return dp[i][balance] = can(i + 1, balance - 1);
  } else if (second[i] == 'D') {
    return dp[i][balance] = can(i + 1, balance);
  } else {
    bool ans = 0;
    ans = can(i + 1, balance + 1);
    if (ans) {
      path[i][balance] = 1;
      return dp[i][balance] = ans;
    }
    ans = can(i + 1, balance - 1);
    if (ans) {
      path[i][balance] = 2;
      return dp[i][balance] = ans;
    }
    ans = can(i + 1, balance);
    if (ans) {
      path[i][balance] = 3;
      return dp[i][balance] = ans;
    }
  }
}
void trace(int i, int balance) {
  if (i == n) {
    return;
  }
  if (!path[i][balance]) {
    cout << second[i];
    if (second[i] == 'W') balance++;
    if (second[i] == 'L') balance--;
    trace(i + 1, balance);
  } else if (path[i][balance] == 1) {
    cout << 'W';
    trace(i + 1, balance + 1);
  } else if (path[i][balance] == 2) {
    cout << 'L';
    trace(i + 1, balance - 1);
  } else {
    cout << 'D';
    trace(i + 1, balance);
  }
}
int main() {
  cin >> n >> k >> second;
  k += M;
  if (!can(0, M)) {
    cout << "NO";
    return 0;
  }
  trace(0, M);
  return 0;
}
