#include <bits/stdc++.h>
using namespace std;

using i64 = int64_t;

#define rep(i, x, y) for (i64 i = i64(x), i##_max_for_repmacro = i64(y); i < i##_max_for_repmacro; ++i)
#define debug(x) #x << "=" << (x)

#ifdef DEBUG
#define _GLIBCXX_DEBUG
#define print(x) std::cerr << debug(x) << " (L:" << __LINE__ << ")" << std::endl
#else
#define print(x)
#endif

const int inf = 1.01e9;
const i64 inf64 = 4.01e18;
const double eps = 1e-9;

template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p) {
    os << "(" << p.first << ", " << p.second << ")";
    return os;
}

template <typename T>
ostream &operator<<(ostream &os, const vector<T> &vec) {
    os << "[";
    for (const auto &v : vec) {
        os << v << ",";
    }
    os << "]";
    return os;
}

template <typename T>
bool chmin(T &a, const T &b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}

template <typename T>
bool chmax(T &a, const T &b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

template<typename T, size_t size> void fill(T (&ary)[size], const T& val){
    fill_n((T*)ary, size, val);
}

void solve() {
    //const i64 mod = 1'000'000'007;

    i64 H,W,N;
    cin >> H >> W >> N;

    i64 sr,sc;
    cin >> sr >> sc;
    --sr;
    --sc;

    string S,T;
    cin >> S >> T;

    vector<vector<i64>> l(2,vector<i64>(N)),r(2,vector<i64>(N)),u(2,vector<i64>(N)),d(2,vector<i64>(N));
    /*
    {
        if(S[0]=='L') ++l[0][0];
        else if(S[0]=='R') ++r[0][0];
        else if(S[0]=='U') ++u[0][0];
        else ++d[0][0];
        rep(i,1,N){
            l[0][i]=l[0][i-1];
            r[0][i]=r[0][i-1];
            u[0][i]=u[0][i-1];
            d[0][i]=d[0][i-1];

            if(S[i]=='L') ++l[0][i];
            else if(S[i]=='R') ++r[0][i];
            else if(S[i]=='U') ++u[0][i];
            else ++d[0][i];
        }
    }
    {
        if(T[0]=='L') ++l[1][0];
        else if(T[0]=='R') ++r[1][0];
        else if(T[0]=='U') ++u[1][0];
        else ++d[1][0];
        rep(i,1,N){
            l[1][i]=l[1][i-1];
            r[1][i]=r[1][i-1];
            u[1][i]=u[1][i-1];
            d[1][i]=d[1][i-1];

            if(T[i]=='L') ++l[1][i];
            else if(T[i]=='R') ++r[1][i];
            else if(T[i]=='U') ++u[1][i];
            else ++d[1][i];
        }
    }
    */
    {
        if(S[N-1]=='L') ++l[0][N-1];
        else if(S[N-1]=='R') ++r[0][N-1];
        else if(S[N-1]=='U') ++u[0][N-1];
        else ++d[0][N-1];
        for(i64 i=N-2; i>=0; --i){
            l[0][i]=l[0][i+1];
            r[0][i]=r[0][i+1];
            u[0][i]=u[0][i+1];
            d[0][i]=d[0][i+1];

            if(S[i]=='L') ++l[0][i];
            else if(S[i]=='R') ++r[0][i];
            else if(S[i]=='U') ++u[0][i];
            else ++d[0][i];
        }
    }
    {
        if(T[N-1]=='L') ++l[1][N-1];
        else if(T[N-1]=='R') ++r[1][N-1];
        else if(T[N-1]=='U') ++u[1][N-1];
        else ++d[1][N-1];
        for(i64 i=N-2; i>=0; --i){
            l[1][i]=l[1][i+1];
            r[1][i]=r[1][i+1];
            u[1][i]=u[1][i+1];
            d[1][i]=d[1][i+1];

            if(T[i]=='L') ++l[1][i];
            else if(T[i]=='R') ++r[1][i];
            else if(T[i]=='U') ++u[1][i];
            else ++d[1][i];
        }
    }

    {
        // 下へ行こうとするのを阻止する
        i64 miny=sr;
        rep(i, 0, N) {
            if(miny+d[0][i]-u[1][i]>=H){
                cout << "NO" << endl;
                return;
            }
            if(S[i]=='D') ++miny;
            if(miny>=H){
                cout << "NO" << endl;
                return;
            }
            if(T[i]=='U' and miny>0) --miny;
        }
    }
    {
        // 上へ行こうとするのを阻止する
        i64 maxy=sr;
        rep(i, 0, N) {
            if(maxy-u[0][i]+d[1][i]<0){
                cout << "NO" << endl;
                return;
            }
            if(S[i]=='U') --maxy;
            if(maxy<0){
                cout << "NO" << endl;
                return;
            }
            if(T[i]=='D' and maxy<H-1) ++maxy;
        }
    }
    {
        // 右へ行こうとするのを阻止する
        i64 minx=sc;
        rep(i, 0, N) {
            if(minx+r[0][i]-l[1][i]>=W){
                cout << "NO" << endl;
                return;
            }
            if(S[i]=='R') ++minx;
            if(minx>=W){
                cout << "NO" << endl;
                return;
            }
            if(T[i]=='L' and minx>0) --minx;
        }
    }
    {
        // 左へ行こうとするのを阻止する
        i64 maxx=sc;
        rep(i, 0, N) {
            if(maxx-l[0][i]+r[1][i]<0){
                cout << "NO" << endl;
                return;
            }
            if(S[i]=='L') --maxx;
            if(maxx<0){
                cout << "NO" << endl;
                return;
            }
            if(T[i]=='R' and maxx<W-1) ++maxx;
        }
    }
    cout << "YES" << endl;
    /*
    {
        if(S[N-1]=='L') ++l[0][N-1];
        else if(S[N-1]=='R') ++r[0][N-1];
        else if(S[N-1]=='U') ++u[0][N-1];
        else ++d[0][N-1];
        for(i64 i=N-2; i>=0; --i){
            l[0][i]=l[0][i+1];
            r[0][i]=r[0][i+1];
            u[0][i]=u[0][i+1];
            d[0][i]=d[0][i+1];

            if(S[i]=='L') ++l[0][i];
            else if(S[i]=='R') ++r[0][i];
            else if(S[i]=='U') ++u[0][i];
            else ++d[0][i];
        }
    }
    {
        if(T[N-1]=='L') ++l[1][N-1];
        else if(T[N-1]=='R') ++r[1][N-1];
        else if(T[N-1]=='U') ++u[1][N-1];
        else ++d[1][N-1];
        for(i64 i=N-2; i>=0; --i){
            l[1][i]=l[1][i+1];
            r[1][i]=r[1][i+1];
            u[1][i]=u[1][i+1];
            d[1][i]=d[1][i+1];

            if(T[i]=='L') ++l[1][i];
            else if(T[i]=='R') ++r[1][i];
            else if(T[i]=='U') ++u[1][i];
            else ++d[1][i];
        }
    */
}

int main() {
    std::cin.tie(0);
    std::ios::sync_with_stdio(false);
    cout.setf(ios::fixed);
    cout.precision(16);
    solve();
    return 0;
}


Measured memory_bytes: 14716