#include <bits/stdc++.h> 
#define repr(i,a,b) for(int i=a;i<b;i++) 
#define rep(i,n) for(int i=0;i<n;i++) 
#define reprrev(i,a,b) for(int i=b-1;i>=a;i--) // [a, b) 
#define reprev(i,n) reprrev(i,0,n) 
#define _GLIBCXX_DEBUG 
#define int long long         
using ll = long long; 
using ull = unsigned long long; 
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } 
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } 
const ll mod = 1e9+7; 
void chmod(ll &M){ 
  if(M >= mod) M %= mod; 
  else if(M < 0){ 
     M += (abs(M)/mod + 1)*mod; 
    M %= mod; 
} 
} 

int getl(int i, int N) { return i==0? N-1:i-1; }; 
int getr(int i, int N) { return i==N-1? 0:i+1; }; 
long long GCD(long long a, long long b) { 
  if (b == 0) return a; 
  else return GCD(b, a % b); 
} 
using namespace std; 
using Graph = vector<vector<int>>;

signed main() {
  int n, m; cin >> n >> m;
  string S; cin >> S;
  int sz = S.length();
  int count_wa = 0;
  int num_wa = 0;
  rep(i, sz) {
    if(S[i]=='W') count_wa++;
    if(S[i]=='A') {
      if(count_wa > 0) {
        num_wa++;
        count_wa--;
        }
      }
    }

  
  int count_ac = 0;
  int num_ac = 0;
  rep(i, sz) {
    if(S[i]=='A') count_ac++;
    if(S[i]=='C') {
      if(count_ac > 0)  {
        num_ac++;
        count_ac--;
        } 
      }
    }
  
  if(num_wa == n && num_ac == m) {
    cout << "Yes" << endl;
  }
  else {
    cout << "No" << endl;
  }
  }