using System;
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using static System.Math;

namespace AtCoder
{
    public class Program
    {
        public static bool check(int[] move,int tag)
        {
            if (move.Length == 0)
            {
                return tag == 0;
            }

            int msum = move.Sum();
            int n = move.Length;
            var dp=Enumerable.Range(1, n + 1).Select(xx => new bool[msum + 2]).ToArray();
            dp[0][0] = true;
            if (msum < tag) return false;
            for(int i = 0; i < n; i++)
            {

                for(int j = 0; j <= msum; j++)
                {
                        if (move[i] + j <= msum && Abs(move[i] - j) <= msum)
                            dp[i + 1][j] = dp[i][Abs(move[i] - j)] | dp[i][move[i] + j];
                        else if (Abs(move[i] - j) <= msum)
                            dp[i + 1][j] = dp[i][Abs(move[i] - j)];
                        else if (move[i] + j <= msum)
                            dp[i + 1][j] = dp[i][move[i] + j];
                    
 
                }
            }
            try
            {
                return dp.Last()[Abs(tag)];
            }
            catch { return false; }
        }





        public static void Main(string[] args)
        {
            var command =( Console.ReadLine()+"TTT").Split('T').ToArray();
            var xmovegen= command.Where((value,index)=>index%2==0).Select(value=>value.Length);
            var ymovegen = command.Where((value, index) => index % 2 == 1).Select(value => value.Length).ToList();
             ymovegen.RemoveAll(yy=>yy==0);
            var ymove = ymovegen.ToArray();
            int x, y;
            Read2Ints(out x, out y);
            x -= xmovegen.First();
            var xmovegen2=xmovegen.Skip(1).ToList();
            xmovegen2.RemoveAll(xx => xx == 0);
            var xmove = xmovegen2.ToArray();

            Write(check(xmove,x)&&check(ymove,y) ? "Yes":"No");
            }

        private static void Read2Ints(out int a, out int b)
        {
            var temp = ReadInts();
            a = temp[0];
            b = temp[1];
        }
        private static void Read3Ints(out int a, out int b, out int c)
        {
            var temp = ReadInts();
            a = temp[0];
            b = temp[1];
            c = temp[2];
        }

        private static void Write(IEnumerable<string> target, string sep = " ") { Console.WriteLine(string.Join(sep, target)); }
        private static void Write(IEnumerable<double> target, string sep = " ") { Console.WriteLine(string.Join(sep, target)); }
        private static void Write(IEnumerable<long> target, string sep = " ") { Console.WriteLine(string.Join(sep, target)); }
        private static void Writeints(IEnumerable<int> target, string sep = " ") { Console.WriteLine(string.Join(sep, target)); }
        private static void Write<T>(T str) { Console.WriteLine(str); }
        private static string[] ReadStrings() { return Console.ReadLine().Split(' '); }
        private static int ReadInt() { return int.Parse(Console.ReadLine()); }
        private static double ReadDouble() { return double.Parse(Console.ReadLine()); }
        private static int[] ReadInts() { return Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray(); }
        private static double[] ReadDoubles() { return Console.ReadLine().Split(' ').Select(x => double.Parse(x)).ToArray(); }

    }

}

Measured memory_bytes: 25068