// SIGMA BOY hihihihihihihi
#define se second
#define fi first
#define pb push_back
#define pob pop_back
#define bitebi __builtin_popcountll
#include <bits/stdc++.h>
using namespace std ;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pll;
typedef pair<int,int> pii;
const ll Mod = 1e9+7;
const ll Maxn = 1e3+100;
const ll oo = 1e18;
const ll inf = 1e9;
char c[Maxn][Maxn];
int d[Maxn][Maxn], n , m , flag=0,DistanceMin;
pii locationA,locationB;
int dx[4] = {0,0,1,-1};
int dy[4] = {-1,1,0,0};
char dc[4] ={'R','L','U','D'};
string res;
bool Check ( int x , int y )
{
// return true neu co the den duoc o do
// false neu nguoc lai
if(x<1||x>n||y<1||y>m||c[x][y]=='#'||d[x][y]!=inf) return false;
return true;
}
void bfs ( pair<int,int> cur )
{
queue<pii> q;
q.push(cur);
d[cur.fi][cur.se] = 0 ;
while(!q.empty()){
cur = q.front(); q.pop();
for (int i = 0 ; i < 4; ++i) {
pii Newlocation = {cur.fi+dx[i],cur.se+dy[i]};
if(Check(Newlocation.fi,Newlocation.se))
{
d[Newlocation.fi][Newlocation.se]=d[cur.fi][cur.se]+1;
q.push(Newlocation);
}
}
}
}
void dfs (pii cur, int leng)
{
if(leng==-1)
{
reverse(res.begin(),res.end());
cout << res;
return;
}
for (int i = 0 ; i < 4; ++i)
{
pii Newlocation = {cur.fi+dx[i],cur.se+dy[i]};
if(Newlocation.fi<1||Newlocation.fi>n
||Newlocation.se<1||Newlocation.se>m) continue;
if(d[Newlocation.fi][Newlocation.se]==leng)
{
res.pb(dc[i]);
dfs(Newlocation,leng-1);
break;
}
}
}
void Do()
{
cin >> n >> m ;
for (int i = 1 ; i <= n ; ++i)
for (int j = 1 ; j <= m ; ++j) {
cin >> c[i][j],d[i][j]=inf;
if(c[i][j]=='A') locationA = {i,j};
if(c[i][j]=='B') locationB = {i,j};
}
bfs(locationA);
DistanceMin = d[locationB.fi][locationB.se];
if(DistanceMin==inf)
{
cout << "NO" << '\n';
return;
}
cout << "YES\n" << DistanceMin << '\n';
dfs(locationB,DistanceMin-1);
}
signed main ()
{
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define task "test"
if(fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int ntest=1;
while(ntest--) Do();
cerr<<"\nTime elapsed: "<<1000*clock()/CLOCKS_PER_SEC<<"ms\n";
}
Ly8gU0lHTUEgQk9ZIGhpaGloaWhpaGloaWhpCgojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcG9iIHBvcF9iYWNrCiNkZWZpbmUgYml0ZWJpIF9fYnVpbHRpbl9wb3Bjb3VudGxsCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZCA7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKdHlwZWRlZiBwYWlyPGludCxpbnQ+IHBpaTsKCmNvbnN0IGxsIE1vZCA9IDFlOSs3Owpjb25zdCBsbCBNYXhuID0gMWUzKzEwMDsKY29uc3QgbGwgb28gPSAxZTE4Owpjb25zdCBsbCBpbmYgPSAxZTk7CgpjaGFyIGNbTWF4bl1bTWF4bl07CmludCBkW01heG5dW01heG5dLCBuICwgbSAsIGZsYWc9MCxEaXN0YW5jZU1pbjsKcGlpIGxvY2F0aW9uQSxsb2NhdGlvbkI7CmludCBkeFs0XSA9IHswLDAsMSwtMX07CmludCBkeVs0XSA9IHstMSwxLDAsMH07CmNoYXIgZGNbNF0gPXsnUicsJ0wnLCdVJywnRCd9OwpzdHJpbmcgcmVzOwoKYm9vbCBDaGVjayAoIGludCB4ICwgaW50IHkgKQp7CiAgICAvLyByZXR1cm4gdHJ1ZSBuZXUgY28gdGhlIGRlbiBkdW9jIG8gZG8KICAgIC8vIGZhbHNlIG5ldSBuZ3VvYyBsYWkKICAgIGlmKHg8MXx8eD5ufHx5PDF8fHk+bXx8Y1t4XVt5XT09JyMnfHxkW3hdW3ldIT1pbmYpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIGJmcyAoIHBhaXI8aW50LGludD4gY3VyICkKewogICAgcXVldWU8cGlpPiBxOwogICAgcS5wdXNoKGN1cik7CiAgICBkW2N1ci5maV1bY3VyLnNlXSA9IDAgOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgY3VyID0gcS5mcm9udCgpOyBxLnBvcCgpOwogICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IDQ7ICsraSkgewogICAgICAgICAgICBwaWkgTmV3bG9jYXRpb24gPSB7Y3VyLmZpK2R4W2ldLGN1ci5zZStkeVtpXX07CiAgICAgICAgICAgIGlmKENoZWNrKE5ld2xvY2F0aW9uLmZpLE5ld2xvY2F0aW9uLnNlKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZFtOZXdsb2NhdGlvbi5maV1bTmV3bG9jYXRpb24uc2VdPWRbY3VyLmZpXVtjdXIuc2VdKzE7CiAgICAgICAgICAgICAgICBxLnB1c2goTmV3bG9jYXRpb24pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIGRmcyAocGlpIGN1ciwgaW50IGxlbmcpCnsKICAgIGlmKGxlbmc9PS0xKQogICAgewogICAgICAgIHJldmVyc2UocmVzLmJlZ2luKCkscmVzLmVuZCgpKTsKICAgICAgICBjb3V0IDw8IHJlczsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmb3IgKGludCBpID0gMCA7IGkgPCA0OyArK2kpCiAgICB7CiAgICAgICAgcGlpIE5ld2xvY2F0aW9uID0ge2N1ci5maStkeFtpXSxjdXIuc2UrZHlbaV19OwogICAgICAgIGlmKE5ld2xvY2F0aW9uLmZpPDF8fE5ld2xvY2F0aW9uLmZpPm4KICAgICAgICAgICB8fE5ld2xvY2F0aW9uLnNlPDF8fE5ld2xvY2F0aW9uLnNlPm0pIGNvbnRpbnVlOwogICAgICAgIGlmKGRbTmV3bG9jYXRpb24uZmldW05ld2xvY2F0aW9uLnNlXT09bGVuZykKICAgICAgICB7CiAgICAgICAgICAgIHJlcy5wYihkY1tpXSk7CiAgICAgICAgICAgIGRmcyhOZXdsb2NhdGlvbixsZW5nLTEpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgRG8oKQp7CiAgICBjaW4gPj4gbiA+PiBtIDsKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKQogICAgICAgIGZvciAoaW50IGogPSAxIDsgaiA8PSBtIDsgKytqKSB7CiAgICAgICAgICAgIGNpbiA+PiBjW2ldW2pdLGRbaV1bal09aW5mOwogICAgICAgICAgICBpZihjW2ldW2pdPT0nQScpIGxvY2F0aW9uQSA9IHtpLGp9OwogICAgICAgICAgICBpZihjW2ldW2pdPT0nQicpIGxvY2F0aW9uQiA9IHtpLGp9OwogICAgICAgIH0KICAgIGJmcyhsb2NhdGlvbkEpOwogICAgRGlzdGFuY2VNaW4gPSBkW2xvY2F0aW9uQi5maV1bbG9jYXRpb25CLnNlXTsKICAgIGlmKERpc3RhbmNlTWluPT1pbmYpCiAgICB7CiAgICAgICAgY291dCA8PCAiTk8iIDw8ICdcbic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY291dCA8PCAiWUVTXG4iIDw8IERpc3RhbmNlTWluIDw8ICdcbic7CiAgICBkZnMobG9jYXRpb25CLERpc3RhbmNlTWluLTEpOwp9CgpzaWduZWQgbWFpbiAoKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApLCBjaW4udGllKDApLCBjb3V0LnRpZSgwKTsKI2RlZmluZSB0YXNrICJ0ZXN0IgogICAgaWYoZm9wZW4odGFzayIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGludCBudGVzdD0xOwogICAgd2hpbGUobnRlc3QtLSkgRG8oKTsKCiAgICBjZXJyPDwiXG5UaW1lIGVsYXBzZWQ6ICI8PDEwMDAqY2xvY2soKS9DTE9DS1NfUEVSX1NFQzw8Im1zXG4iOwp9Cg==