#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define mod 1000000007
#define inf 100000000000000000
#define ar array
#define fast ios::sync_with_stdio(false); cin.tie(0)
#define setpres(x) fixed<<setprecision(x)
using namespace std;
int m,n;
string s[1000];
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
queue<ar<int,2>> q;
map<ar<int,2>,ar<int,2>> par;
map<ar<int,2>,int> vis;
string ans;
bool ok(int i, int j)
{
    return i>=0 && i<m && j>=0 && j<n && !vis[{i,j}] && s[i][j]!='#';
}
int32_t main()
{
    cin>>m>>n;
    for(int i=0;i<m;i++)
        cin>>s[i];
    int ia,ib, fx,fy;
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(s[i][j]=='A')
            {
                ia=i;
                ib=j;
            }
            if(s[i][j]=='B')
            {
                fx=i;
                fy=j;
            }
        }
    }
    par[{ia,ib}]={-1,-1};
    q.push({ia,ib});
    vis[{ia,ib}]=1;
    while(!q.empty())
    {
        auto x=q.front();
        q.pop();
        if(x[0]==fx && x[1]==fy)
            break;
        int i=x[0];
        int j=x[1];
        for(int k=0;k<4;k++)
        {
            if(ok(i+dx[k],j+dy[k]))
            {
                q.push({i+dx[k],j+dy[k]});
                vis[{i+dx[k],j+dy[k]}]=1;
                par[{i+dx[k],j+dy[k]}]={x[0],x[1]};
            }
        }
    }
    if(par.find({fx,fy})==par.end())
    {
        cout<<"NO";
        return 0;
    }
    cout<<"YES\n";
    while(1)
    {
        if(par[{fx,fy}][0]==-1)
            break;
        int f1=par[{fx,fy}][0];
        int f2=par[{fx,fy}][1];
        if(f2==fy+1)
            ans+='L';
        else if(f2==fy-1)
            ans+='R';
        else if(f1==fx+1)
            ans+='U';
        else
            ans+='D';
        fx=f1;
        fy=f2;
    }
    cout<<ans.length()<<"\n";
    for(int i=ans.length()-1;i>=0;i--)
        cout<<ans[i];
}