#include <bits/stdc++.h>
#pragma GCC optimize("Ofast", "unroll-loops", "omit-frame-pointer", "inline")
#pragma GCC option("arch=native", "tune=native", "no-zero-upper")
#pragma GCC target("avx2")
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 110;
char str[N];
int n, m;
int main() {
  scanf("%d%d", &n, &m);
  scanf("%s", str + 1);
  str[0] = 'Y';
  str[n + 1] = 'Y';
  int sum = 0;
  int maxv = 0;
  for (int i = 1; i <= n; i++) {
    if (str[i] == 'Y' || str[i] == '?')
      sum = 0;
    else
      sum++;
    maxv = max(maxv, sum);
  }
  if (maxv == m) {
    puts("YES");
    return 0;
  }
  if (maxv > m) {
    puts("NO");
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    if ((str[i] == 'N' || str[i] == '?') &&
        (str[i - 1] == 'Y' || str[i - 1] == '?')) {
      sum = 0;
      for (int j = i; j <= n; j++) {
        if (str[j] == '?' || str[j] == 'N') sum++;
        if (sum == m && (str[j + 1] == 'Y' || str[j + 1] == '?')) {
          puts("YES");
          return 0;
        }
        if (sum == m) break;
        if (str[j] == 'Y') break;
      }
    }
  }
  puts("NO");
  return 0;
}
