// 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+1;
const int oo = 1e9;
int moveJ[4] = {1,-1,0,0};
int moveI[4] = {0,0,-1,1};
char Direction[4] = {'R','L','U','D'};
int moveJinverse[4] = {-1,1,0,0};
int moveIinverse[4] = {0,0,1,-1};
int n , m , d_monster[Maxn][Maxn], d_A[Maxn][Maxn],a,b,x,y;
pii flag = {0,0};
queue<pii> monster, A;
char c[Maxn][Maxn], tv[Maxn][Maxn];
void bfs ( queue<pii>&q , int tt)
{
while(!q.empty())
{
auto id = q.front();
a = id.fi;
b = id.se;
if(tt&&(a==n||a==1||b==m||b==1))
{
flag = {a,b};
return;
}
q.pop();
for (int i = 0 ; i < 4 ; ++i)
{
x = a+moveI[i];
y = b+moveJ[i];
if(c[x][y]=='#') continue;
if(!tt&&d_monster[x][y]==oo)
{
//cout << x << ' ' << y << ' ' << d_monster[x][y] << '\n';
d_monster[x][y]=d_monster[a][b]+1;
q.push({x,y});
}
if(tt && d_A[x][y] == -1)
{
d_A[x][y] = d_A[a][b]+1;
if(d_A[x][y] < d_monster[x][y])
{
tv[x][y] = Direction[i];
q.push({x,y});
}
}
}
}
}
void Do()
{
cin >> n >> m ;
for (int i = 1 ; i <= n ; ++i)
{
fill(d_monster[i]+1,d_monster[i]+m+1,oo);
fill(d_A[i]+1,d_A[i]+m+1,-1);
}
for (int i = 1 ; i <= n ; ++i)
{
for (int j = 1 ; j <= m ; ++j)
{
cin >> c[i][j];
if(c[i][j]=='M')
{
monster.push({i,j});
d_monster[i][j] = 0;
}
else if(c[i][j]=='A')
{
A.push({i,j});
d_A[i][j] = 0;
}
}
}
bfs(monster,0);
bfs(A,1);
if(flag.fi==0)
{
cout << "NO\n";
return;
}
cout << "YES\n";
vector<char> res;
x = flag.fi;
y = flag.se;
while(c[x][y]!='A')
{
for (int i = 0 ; i < 4 ; ++i)
{
if(Direction[i]==tv[x][y])
{
res.pb(tv[x][y]);
x += moveIinverse[i];
y += moveJinverse[i];
break;
}
}
}
reverse(res.begin(),res.end());
cout << res.size() << '\n' ;
for (auto x:res)
cout << x;
}
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+IHBpaTsKY29uc3QgbGwgTW9kID0gMWU5Kzc7CmNvbnN0IGxsIE1heG4gPSAxZTMrMTsKY29uc3QgaW50IG9vID0gMWU5OwoKaW50IG1vdmVKWzRdID0gezEsLTEsMCwwfTsKaW50IG1vdmVJWzRdID0gezAsMCwtMSwxfTsKY2hhciBEaXJlY3Rpb25bNF0gPSB7J1InLCdMJywnVScsJ0QnfTsKaW50IG1vdmVKaW52ZXJzZVs0XSA9IHstMSwxLDAsMH07CmludCBtb3ZlSWludmVyc2VbNF0gPSB7MCwwLDEsLTF9OwoKaW50IG4gLCBtICwgZF9tb25zdGVyW01heG5dW01heG5dLCBkX0FbTWF4bl1bTWF4bl0sYSxiLHgseTsKcGlpIGZsYWcgPSB7MCwwfTsKcXVldWU8cGlpPiBtb25zdGVyLCBBOwpjaGFyIGNbTWF4bl1bTWF4bl0sIHR2W01heG5dW01heG5dOwoKdm9pZCBiZnMgKCBxdWV1ZTxwaWk+JnEgLCBpbnQgdHQpCnsKICAgIHdoaWxlKCFxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgYXV0byBpZCA9IHEuZnJvbnQoKTsKICAgICAgICBhID0gaWQuZmk7CiAgICAgICAgYiA9IGlkLnNlOwogICAgICAgIGlmKHR0JiYoYT09bnx8YT09MXx8Yj09bXx8Yj09MSkpCiAgICAgICAgewogICAgICAgICAgICBmbGFnID0ge2EsYn07CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPCA0IDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgeCA9IGErbW92ZUlbaV07CiAgICAgICAgICAgIHkgPSBiK21vdmVKW2ldOwogICAgICAgICAgICBpZihjW3hdW3ldPT0nIycpIGNvbnRpbnVlOwogICAgICAgICAgICBpZighdHQmJmRfbW9uc3Rlclt4XVt5XT09b28pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vY291dCA8PCB4IDw8ICcgJyA8PCB5IDw8ICcgJyA8PCBkX21vbnN0ZXJbeF1beV0gPDwgJ1xuJzsKICAgICAgICAgICAgICAgIGRfbW9uc3Rlclt4XVt5XT1kX21vbnN0ZXJbYV1bYl0rMTsKICAgICAgICAgICAgICAgIHEucHVzaCh7eCx5fSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKHR0ICYmIGRfQVt4XVt5XSA9PSAtMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZF9BW3hdW3ldID0gZF9BW2FdW2JdKzE7CiAgICAgICAgICAgICAgICBpZihkX0FbeF1beV0gPCBkX21vbnN0ZXJbeF1beV0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdHZbeF1beV0gPSBEaXJlY3Rpb25baV07CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHt4LHl9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBEbygpCnsKICAgIGNpbiA+PiBuID4+IG0gOwogICAgZm9yIChpbnQgaSA9IDEgOyBpIDw9IG4gOyArK2kpCiAgICB7CiAgICAgICAgZmlsbChkX21vbnN0ZXJbaV0rMSxkX21vbnN0ZXJbaV0rbSsxLG9vKTsKICAgICAgICBmaWxsKGRfQVtpXSsxLGRfQVtpXSttKzEsLTEpOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKQogICAgewogICAgICAgIGZvciAoaW50IGogPSAxIDsgaiA8PSBtIDsgKytqKQogICAgICAgIHsKICAgICAgICAgICAgY2luID4+IGNbaV1bal07CiAgICAgICAgICAgIGlmKGNbaV1bal09PSdNJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbW9uc3Rlci5wdXNoKHtpLGp9KTsKICAgICAgICAgICAgICAgIGRfbW9uc3RlcltpXVtqXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihjW2ldW2pdPT0nQScpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEEucHVzaCh7aSxqfSk7CiAgICAgICAgICAgICAgICBkX0FbaV1bal0gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGJmcyhtb25zdGVyLDApOwogICAgYmZzKEEsMSk7CiAgICBpZihmbGFnLmZpPT0wKQogICAgewogICAgICAgIGNvdXQgPDwgIk5PXG4iOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvdXQgPDwgIllFU1xuIjsKICAgIHZlY3RvcjxjaGFyPiByZXM7CiAgICB4ID0gZmxhZy5maTsKICAgIHkgPSBmbGFnLnNlOwogICAgd2hpbGUoY1t4XVt5XSE9J0EnKQogICAgewogICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IDQgOyArK2kpCiAgICAgICAgewogICAgICAgICAgICBpZihEaXJlY3Rpb25baV09PXR2W3hdW3ldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXMucGIodHZbeF1beV0pOwogICAgICAgICAgICAgICAgeCArPSBtb3ZlSWludmVyc2VbaV07CiAgICAgICAgICAgICAgICB5ICs9IG1vdmVKaW52ZXJzZVtpXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV2ZXJzZShyZXMuYmVnaW4oKSxyZXMuZW5kKCkpOwogICAgY291dCA8PCByZXMuc2l6ZSgpIDw8ICdcbicgOwogICAgZm9yIChhdXRvIHg6cmVzKQogICAgICAgIGNvdXQgPDwgeDsKfQoKc2lnbmVkIG1haW4gKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKSwgY2luLnRpZSgwKSwgY291dC50aWUoMCk7CiNkZWZpbmUgdGFzayAidGVzdCIKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsICJyIikpewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBpbnQgbnRlc3Q9MTsKICAgIHdoaWxlKG50ZXN0LS0pIERvKCk7CgogICAgY2Vycjw8IlxuVGltZSBlbGFwc2VkOiAiPDwxMDAwKmNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUM8PCJtc1xuIjsKfQo=