//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize(3)
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC target("sse3","sse2","sse")
//#pragma GCC target("avx","sse4","sse4.1","sse4.2","ssse3")
//#pragma GCC target("f16c")
//#pragma GCC optimize("inline","fast-math","unroll-loops","no-stack-protector")
//#pragma GCC diagnostic error "-fwhole-program"
//#pragma GCC diagnostic error "-fcse-skip-blocks"
//#pragma GCC diagnostic error "-funsafe-loop-optimizations"
//#pragma GCC diagnostic error "-std=c++14"
#include<bits/stdc++.h>
#define MST(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define eb emplace_back
#define rep(i,a,b) for(int i = a ; i < b ; ++i)
#define per(i,a,b) for(int i = a ; i > b ; --i)
#define ALL(v) v.begin(),v.end()
#define ft first
#define sd second
using namespace std;

typedef long long LL;
typedef pair<int,int> pii;
template<class T> void show(T *x,int len,int s = 0) {for(int i = s ; i < s+len-1 ; ++i) cerr << x[i] << ' ';cerr << x[s+len-1] << endl;}
void debug() {cerr << endl;}
template <typename T, typename... Args> void debug(T x,Args... args) {cerr << x << ' ';debug(args...);}

namespace fast_IO{
	const int maxbuff = 1<<17;
	char ibuff[maxbuff],obuff[maxbuff];
	inline char Getchar(){
	    static char *p1=ibuff,*p2=ibuff;
		if(p1 == p2) {
	    	p1 = ibuff;
	    	p2 = ibuff+fread(ibuff,1,maxbuff,stdin);
	    	if(p1 == p2) return -1;
	    }
	    return *p1++;
	}

	int optr = 0;
	inline void Putchar(char c) {
		if(optr == maxbuff) {fwrite(obuff,1,optr,stdout);optr = 0;}
		obuff[optr++] = c;
	}

	inline void Flush() {
		fwrite(obuff,1,optr,stdout);
	}

	template<class T>
		inline int read(T &x) {
			x = 0;
			char c = Getchar();
			if(c == EOF) return -1;
			for( ; (c < '0' || c > '9') && c != EOF ; c = Getchar());
			if(c == EOF) return -1;
			for( ; c >= '0' && c <= '9' ; c = Getchar()) x = x*10+c-'0';
			return 0;
		}

	template<class T>
		inline void write(const T &x,int tag = 0) {
			if(!x) {
				if(!tag) Putchar(x+'0');
				return ;
			}
			write(x/10,1);
			Putchar(x%10+'0');
		}

	template<class T>
		inline void writeln(const T &x) {
			write(x);Putchar('\n');
		}

	template<class T>
		inline void writesp(const T &x) {
			write(x);Putchar(' ');
		}
}
template<class T>
inline void cmin(T &A,const T &B) {A = (A<B?A:B);}
template<class T>
inline void cmax(T &A,const T &B) {A = (A>B?A:B);}

const int N = 2e5+19;
string a,b;

int main(){
	int n,m,x,y,t;
	cin >> n >> m >> t >> x >> y;
	cin >> a >> b;
	{
		int p = x;
		for(int i = 0 ; i < t ; ++i) {
			if(a[i] == 'U') --p;
			if(p < 1) {
				puts("NO");
				return 0;
			}
			if(b[i] == 'D' && p < n) ++p;
		}
		if(p < 1) {
			puts("NO");
			return 0;
		}
	}
	{
		int p = x;
		for(int i = 0 ; i < t ; ++i) {
			if(a[i] == 'D') ++p;
			if(p > n) {
				puts("NO");
				return 0;
			}
			if(b[i] == 'U' && p > 1) --p;
		}
		if(p > n) {
			puts("NO");
			return 0;
		}
	}
	{
		int p = y;
		for(int i = 0 ; i < t ; ++i) {
			if(a[i] == 'L') --p;
			if(p < 1) {
				puts("NO");
				return 0;
			}
			if(b[i] == 'R' && p < n) ++p;
		}
		if(p < 1) {
			puts("NO");
			return 0;
		}
	}
	{
		int p = y;
		for(int i = 0 ; i < t ; ++i) {
			if(a[i] == 'R') ++p;
			if(p > m) {
				puts("NO");
				return 0;
			}
			if(b[i] == 'L' && p > 1) --p;
		}
		if(p > m) {
			puts("NO");
			return 0;
		}
	}
	puts("YES");
	return 0;
}
		

Measured memory_bytes: 776