#include <bits/stdc++.h>
using namespace std;
const int maxn = 5000;
const int mid = 2500;
int dp[1005][maxn], pre[1005][maxn];
char str[1005];
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  int i, j;
  scanf("%s", str);
  if (str[0] == 'W' || str[0] == '?') {
    if (k != 1 && n != 1) {
      dp[0][mid + 1] = 1;
      pre[0][mid + 1] = mid;
    } else if (k == 1 && n == 1) {
      dp[0][mid + 1] = 1;
      pre[0][mid + 1] = mid;
    }
  }
  if (str[0] == 'D' || str[0] == '?') {
    dp[0][mid] = 1;
    pre[0][mid] = mid;
  }
  if (str[0] == 'L' || str[0] == '?') {
    if (k != 1 && n != 1) {
      dp[0][mid - 1] = 1;
      pre[0][mid - 1] = mid;
    } else if (k == 1 && n == 1) {
      dp[0][mid + 1] = 1;
      pre[0][mid + 1] = mid;
    }
  }
  for (i = 1; i < n; i++) {
    int start, end;
    if (i == (n - 1)) {
      start = mid - k;
      end = mid + k;
    } else {
      start = mid - k + 1;
      end = mid + k - 1;
    }
    if (str[i] == 'W' || str[i] == '?') {
      for (j = start; j <= end; j++) {
        if (dp[i - 1][j - 1]) {
          dp[i][j] = dp[i - 1][j - 1];
          pre[i][j] = j - 1;
        }
      }
    }
    if (str[i] == 'D' || str[i] == '?') {
      for (j = start; j <= end; j++) {
        if (dp[i - 1][j]) {
          dp[i][j] = dp[i - 1][j];
          pre[i][j] = j;
        }
      }
    }
    if (str[i] == 'L' || str[i] == '?') {
      for (j = start; j <= end; j++) {
        if (dp[i - 1][j + 1]) {
          dp[i][j] = dp[i - 1][j + 1];
          pre[i][j] = j + 1;
        }
      }
    }
  }
  if (dp[n - 1][mid + k] == 0 && dp[n - 1][mid - k] == 0) {
    printf("NO\n");
    return 0;
  }
  int temp = mid + k;
  int temp1;
  string s;
  if (dp[n - 1][mid + k]) {
    n = n - 1;
    while (1) {
      if (n == 0) {
        if (str[n] == 'W') {
          if (dp[n][temp])
            s += "W";
          else {
            printf("NO\n");
            return 0;
          }
        }
        if (str[n] == 'D') {
          if (dp[n][temp])
            s += "D";
          else {
            printf("NO\n");
            return 0;
          }
        }
        if (str[n] == 'L') {
          if (dp[n][temp])
            s += "L";
          else {
            printf("NO\n");
            return 0;
          }
        }
        if (str[n] == '?') {
          if (dp[n][temp] == 1) {
            if (temp == mid) s += "D";
            if (temp > mid) s += "W";
            if (temp < mid) s += "L";
          } else {
            printf("NO\n");
            return 0;
          }
        }
        break;
      } else {
        if (str[n] == 'W') {
          temp = temp - 1;
          if (dp[n - 1][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          s += "W";
          n--;
          continue;
        }
        if (str[n] == 'D') {
          temp = temp;
          if (dp[n - 1][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          s += "D";
          n--;
          continue;
        }
        if (str[n] == 'L') {
          temp = temp + 1;
          if (dp[n - 1][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          s += "L";
          n--;
          continue;
        }
        if (str[n] == '?') {
          temp1 = pre[n][temp];
          if (dp[n][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          if (temp1 == temp)
            s += "D";
          else if (temp1 < temp)
            s += "W";
          else
            s += "L";
          temp = temp1;
          n--;
        }
      }
    }
    reverse(s.begin(), s.end());
    cout << s << endl;
    return 0;
  }
  temp = mid - k;
  if (dp[n - 1][mid - k]) {
    n = n - 1;
    while (1) {
      if (n == 0) {
        if (str[n] == 'W') {
          if (dp[n][temp])
            s += "W";
          else {
            printf("NO\n");
            return 0;
          }
        }
        if (str[n] == 'D') {
          if (dp[n][temp])
            s += "D";
          else {
            printf("NO\n");
            return 0;
          }
        }
        if (str[n] == 'L') {
          if (dp[n][temp])
            s += "L";
          else {
            printf("NO\n");
            return 0;
          }
        }
        if (str[n] == '?') {
          if (dp[n][temp] == 1) {
            if (temp == mid) s += "D";
            if (temp > mid) s += "W";
            if (temp < mid) s += "L";
          } else {
            printf("NO\n");
            return 0;
          }
        }
        break;
      } else {
        if (str[n] == 'W') {
          temp = temp - 1;
          if (dp[n - 1][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          s += "W";
          n--;
          continue;
        }
        if (str[n] == 'D') {
          temp = temp;
          if (dp[n - 1][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          s += "D";
          n--;
          continue;
        }
        if (str[n] == 'L') {
          temp = temp + 1;
          if (dp[n - 1][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          s += "L";
          n--;
          continue;
        }
        if (str[n] == '?') {
          temp1 = pre[n][temp];
          if (dp[n][temp] == 0) {
            printf("NO\n");
            return 0;
          }
          if (temp1 == temp)
            s += "D";
          else if (temp1 < temp)
            s += "W";
          else
            s += "L";
          temp = temp1;
          n--;
        }
      }
    }
    reverse(s.begin(), s.end());
    cout << s << endl;
    return 0;
  }
  return 0;
}
