#include <bits/stdc++.h>
using namespace std;
char str[1000005];
int black[1000005], white[1000005], X[1000005], pwr[1000005];
int dplft[1000005], dprgt[1000005];
int mod_plus(int a, int b) { return (a + b) % 1000000007; }
int mod_mul(long long a, long long b) { return (a * b) % 1000000007; }
int mod_min(int a, int b) { return (a - b + 1000000007) % 1000000007; }
int cnt(int a[1000005], int l, int r) {
  if (l > r) return 0;
  return a[r] - a[l - 1];
}
int main() {
  int i, n, k;
  pwr[0] = 1;
  for (i = 1; i < 1000005; i++) pwr[i] = mod_mul(pwr[i - 1], 2);
  scanf("%d", &n);
  scanf("%d", &k);
  scanf("%s", str + 1);
  for (i = 1; i <= n; i++) {
    if (str[i] == 'B') black[i] = 1;
    if (str[i] == 'W') white[i] = 1;
    if (str[i] == 'X') X[i] = 1;
  }
  for (i = 1; i <= n; i++) {
    black[i] += black[i - 1];
    white[i] += white[i - 1];
    X[i] += X[i - 1];
  }
  dplft[0] = 1;
  for (i = 1; i <= n; i++) {
    dplft[i] = dplft[i - 1];
    if (str[i] == 'W') continue;
    if (i - k >= 0 && !cnt(white, i - k + 1, i) && str[i - k] != 'B') {
      if (str[i - k] == 'X')
        dplft[i] = mod_min(dplft[i], dplft[i - k - 1]);
      else
        dplft[i] = mod_min(dplft[i], dplft[i - k]);
    }
    if (str[i] == 'X') dplft[i] = mod_plus(dplft[i], dplft[i - 1]);
  }
  dprgt[n + 1] = 1;
  for (i = n; i > 0; i--) {
    dprgt[i] = dprgt[i + 1];
    if (str[i] == 'B') continue;
    if (i + k <= n + 1 && !cnt(black, i, i + k - 1) && str[i + k] != 'W') {
      if (str[i + k] == 'X')
        dprgt[i] = mod_min(dprgt[i], dprgt[i + k + 1]);
      else
        dprgt[i] = mod_min(dprgt[i], dprgt[i + k]);
    }
    if (str[i] == 'X') dprgt[i] = mod_plus(dprgt[i], dprgt[i + 1]);
  }
  int ans = 0;
  for (i = k; i <= n; i++) {
    if (!cnt(white, i - k + 1, i) && str[i - k] != 'B') {
      int c;
      if (str[i - k] == 'X')
        c = dplft[i - k - 1];
      else
        c = dplft[i - k];
      ans = mod_plus(ans,
                     mod_mul(c, mod_min(pwr[cnt(X, i + 1, n)], dprgt[i + 1])));
    }
  }
  cout << ans << endl;
  return 0;
}
