#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key

typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;

const long long mod = 1000000007;
const long long inf = 1e18;

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    string s;
    cin>>s;
    s+="T";
    int n=s.length();
    int p,q;
    cin>>p>>q;
    vi x,y;
    x.pb(0);
    y.pb(0);
    int c=0;    // c=0 x ; c=1 y
    int count=0;
    for(int i=0;i<n;i++){
        if(s[i]=='F'){
            count+=1;
        }
        else{
            if(c==0){
                if(count>0){
                    x.pb(count);
                    count=0;
                }
                c=1;
            }
            else{
                if(count>0){
                    y.pb(count);
                    count=0;
                }
                c=0;
            }
        }
    }
    int mx=0,my=0;
    for(auto i:x){
        mx+=i;
    }
    for(auto i:y){
        my+=i;
    }
    bool dpx[x.size()+1][2*mx+1];
    bool dpy[y.size()+1][2*my+1];
    for(int j=0;j<=x.size();j++){
        for(int i=0;i<=2*mx;i++){
            dpx[j][i]=0;
        }
    }
    for(int j=0;j<=y.size();j++){
        for(int i=0;i<=2*my;i++){
            dpy[j][i]=0;
        }
    }
    if(s[0]=='F'){
        dpx[1][mx+x[1]]=1;
        for(int i=2;i<x.size();i++){
            for(int j=0;j<=2*mx;j++){
                if(dpx[i-1][j]==1){
                    if(j+x[i]<=2*mx){
                        dpx[i][j+x[i]]=1;
                    }
                    if(j-x[i]>=0){
                        dpx[i][j-x[i]]=1;
                    }
                }
            }
        }
        dpy[0][my]=1;
        for(int i=1;i<y.size();i++){
            for(int j=0;j<=2*my;j++){
                if(dpy[i-1][j]==1){
                    if(j+y[i]<=2*my){
                        dpy[i][j+y[i]]=1;
                    }
                    if(j-y[i]>=0){
                        dpy[i][j-y[i]]=1;
                    }
                }
            }
        }
    }
    else{
        dpx[0][mx]=1;
        for(int i=1;i<x.size();i++){
            for(int j=0;j<=2*mx;j++){
                if(dpx[i-1][j]==1){
                    if(j+x[i]<=2*mx){
                        dpx[i][j+x[i]]=1;
                    }
                    if(j-x[i]>=0){
                        dpx[i][j-x[i]]=1;
                    }
                }
            }
        }
        dpy[0][my]=1;
        for(int i=1;i<y.size();i++){
            for(int j=0;j<=2*my;j++){
                if(dpy[i-1][j]==1){
                    if(j+y[i]<=2*my){
                        dpy[i][j+y[i]]=1;
                    }
                    if(j-y[i]>=0){
                        dpy[i][j-y[i]]=1;
                    }
                }
            }
        }
    }
    if(p<=mx && q<=my && dpx[x.size()-1][p+mx]==1 && dpy[y.size()-1][q+my]==1){
        cout<<"Yes"<<endl;
    }
    else{
        cout<<"No"<<endl;
    }
    return 0;
}


Measured memory_bytes: 19300