#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define all(x) x.begin(), x.end()
typedef long long ll;
const ll INF = (ll)1e13;
const ll MOD = 1000000007;
ll n , m;
vector< vector < bool > > vis ;
vector < vector < char > > parent ;
vector < vector <ll > >monster,humain ;
vector < vector < char > > matrix ;
bool valid (ll i , ll j ) {
return i >= 0 && i < n && j >= 0 && j < m && !vis[i][j] && matrix[i][j] == '.';
}
void bfs(queue< pair < ll , ll > >& q , vector < vector < ll > >& v , bool test) {
while (!q.empty()) {
pair < ll , ll > p = q.front();
q.pop();
int i = p.first , j = p.second;
if (valid(i , j-1)) {
if (test )parent[i][j-1] = 'L';
vis[i][j-1] = true;
v[i][j-1] = v[i][j] + 1;
q.push(make_pair(i, j-1));
}
if (valid(i , j+1)) {
if (test )parent[i][j+1] = 'R';
vis[i][j+1] = true;
v[i][j+1] = v[i][j] + 1;
q.push(make_pair(i, j+1));
}
if (valid(i-1 , j)) {
if (test )parent[i-1][j] = 'U';
vis[i-1][j] = true;
v[i-1][j] = v[i][j] + 1;
q.push(make_pair(i-1, j));
}
if (valid(i+1 , j)) {
if (test )parent[i+1][j] = 'D';
vis[i+1][j] = true;
v[i+1][j] = v[i][j] + 1;
q.push(make_pair(i+1, j));
}
}
}
void solve() {
ll x1 , y1 ;
cin >> n >> m;
matrix.assign(n , vector<char>(m));
vis.assign(n, vector < bool > (m , false ));
monster.assign(n , vector < ll >(m, 1e6));
humain.assign(n , vector < ll >(m, 1e6));
parent.assign(n , vector < char > (m ,'.'));
for (int i = 0 ; i < n ; i++) {
for (int j = 0 ; j < m ; j++) cin >> matrix[i][j];
}
queue <pair < ll , ll > > q;
for (int i = 0 ; i < n ; i++) {
for (int j = 0 ; j < m ; j++) {
if (matrix[i][j] == 'M') {
q.push(make_pair(i , j));
monster[i][j] = 0;
vis[i][j] = true;
}
}
}
bfs(q, monster ,0 );
q = queue < pair < ll , ll > >();
vis.assign(n , vector <bool > (m , false));
for (int i = 0 ; i < n ; i++) {
for (int j = 0 ; j < m ; j++) {
if (matrix[i][j] == 'A') {
q.push(make_pair(i , j));
humain[i][j] = 0;
x1 = i ; y1= j ;
vis[i][j] = true;
}
}
}
bfs(q, humain, 1 );
bool test = false;
int x , y;
for (int i = 0 ; i < n ; i++) {
if (humain[i][0] < monster[i][0]) {
x = i ; y = 0 ;
test = 1 ;
break;
}
else if (humain[i][m-1] < monster[i][m-1]) {
x = i ; y = m-1 ;
test = 1 ;
break;
}
}
for (int j = 0 ; j < m && !test; j++) {
if (humain[0][j] < monster[0][j]) {
x = 0 ; y = j;
test = 1;
break;
}
else if (humain[n-1][j] < monster[n-1][j]) {
x = n-1 ; y = j;
test = 1;
break;
}
}
if (!test) {
cout << "NO" << endl;
return;
}
cout << "YES" << endl;
string s ;
while (parent[x][y] != '.') {
s+=parent[x][y] ;
char c = parent[x][y] ;
if ( c == 'R') {
y -- ;
}
else if (c == 'L') {
y ++ ;
}
else if (c == 'U') {
x ++ ;
}
else x-- ;
}
reverse(all(s) ) ;
cout <<s.size() <<endl << s<<endl ;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll t = 1;
//cin >> t;
while (t--) {
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKY29uc3QgbGwgSU5GID0gKGxsKTFlMTM7CmNvbnN0IGxsIE1PRCA9IDEwMDAwMDAwMDc7CgpsbCBuICwgbTsKdmVjdG9yPCB2ZWN0b3IgPCBib29sID4gPiAgdmlzICA7CnZlY3RvciA8IHZlY3RvciA8IGNoYXIgPiA+IHBhcmVudCA7CnZlY3RvciA8IHZlY3RvciA8bGwgPiA+bW9uc3RlcixodW1haW4gIDsKdmVjdG9yIDwgIHZlY3RvciA8IGNoYXIgPiA+IG1hdHJpeCA7CmJvb2wgdmFsaWQgKGxsIGkgLCBsbCBqICkgewogICAgcmV0dXJuIGkgPj0gMCAmJiBpIDwgbiAmJiBqID49IDAgJiYgaiA8IG0gJiYgIXZpc1tpXVtqXSAmJiBtYXRyaXhbaV1bal0gPT0gJy4nOwp9Cgp2b2lkIGJmcyhxdWV1ZTwgcGFpciA8IGxsICwgbGwgPiA+JiBxICwgdmVjdG9yIDwgdmVjdG9yIDwgbGwgPiA+JiB2ICwgYm9vbCB0ZXN0KSB7CiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIHBhaXIgPCBsbCAsIGxsID4gcCA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGludCBpID0gcC5maXJzdCAsIGogPSBwLnNlY29uZDsKICAgICAgICBpZiAodmFsaWQoaSAsIGotMSkpIHsKICAgICAgICAgICAgIGlmICh0ZXN0IClwYXJlbnRbaV1bai0xXSA9ICdMJzsKICAgICAgICAgICAgdmlzW2ldW2otMV0gPSB0cnVlOwogICAgICAgICAgICB2W2ldW2otMV0gPSB2W2ldW2pdICsgMTsKICAgICAgICAgICAgcS5wdXNoKG1ha2VfcGFpcihpLCBqLTEpKTsKICAgICAgICB9CiAgICAgICAgaWYgKHZhbGlkKGkgLCBqKzEpKSB7CiAgICAgICAgICAgIGlmICh0ZXN0IClwYXJlbnRbaV1baisxXSA9ICdSJzsKICAgICAgICAgICAgdmlzW2ldW2orMV0gPSB0cnVlOwogICAgICAgICAgICB2W2ldW2orMV0gPSB2W2ldW2pdICsgMTsKICAgICAgICAgICAgcS5wdXNoKG1ha2VfcGFpcihpLCBqKzEpKTsKICAgICAgICB9CiAgICAgICAgaWYgKHZhbGlkKGktMSAsIGopKSB7CiAgICAgICAgICAgIGlmICh0ZXN0IClwYXJlbnRbaS0xXVtqXSA9ICdVJzsKICAgICAgICAgICAgdmlzW2ktMV1bal0gPSB0cnVlOwogICAgICAgICAgICB2W2ktMV1bal0gPSB2W2ldW2pdICsgMTsKICAgICAgICAgICAgcS5wdXNoKG1ha2VfcGFpcihpLTEsIGopKTsKICAgICAgICB9CiAgICAgICAgaWYgKHZhbGlkKGkrMSAsIGopKSB7CiAgICAgICAgICAgIGlmICh0ZXN0IClwYXJlbnRbaSsxXVtqXSA9ICdEJzsKICAgICAgICAgICAgdmlzW2krMV1bal0gPSB0cnVlOwogICAgICAgICAgICB2W2krMV1bal0gPSB2W2ldW2pdICsgMTsKICAgICAgICAgICAgcS5wdXNoKG1ha2VfcGFpcihpKzEsIGopKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBsbCB4MSAsIHkxIDsKICAgIGNpbiA+PiBuID4+IG07CiAgICBtYXRyaXguYXNzaWduKG4gLCB2ZWN0b3I8Y2hhcj4obSkpOwogICAgdmlzLmFzc2lnbihuLCB2ZWN0b3IgPCBib29sID4gKG0gLCBmYWxzZSApKTsKICAgIG1vbnN0ZXIuYXNzaWduKG4gLCB2ZWN0b3IgPCBsbCA+KG0sIDFlNikpOwogICAgaHVtYWluLmFzc2lnbihuICwgdmVjdG9yIDwgbGwgPihtLCAxZTYpKTsKICAgIHBhcmVudC5hc3NpZ24obiAsIHZlY3RvciA8IGNoYXIgPiAobSAsJy4nKSk7CgogICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgbiA7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwIDsgaiA8IG0gOyBqKyspIGNpbiA+PiBtYXRyaXhbaV1bal07CiAgICB9CgogICAgcXVldWUgPHBhaXIgPCBsbCAsICBsbCA+ID4gcTsKICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMCA7IGogPCBtIDsgaisrKSB7CiAgICAgICAgICAgIGlmIChtYXRyaXhbaV1bal0gPT0gJ00nKSB7CiAgICAgICAgICAgICAgICBxLnB1c2gobWFrZV9wYWlyKGkgLCBqKSk7CiAgICAgICAgICAgICAgICBtb25zdGVyW2ldW2pdID0gMDsKICAgICAgICAgICAgICAgIHZpc1tpXVtqXSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBiZnMocSwgbW9uc3RlciAsMCApOwoKICAgIHEgPSBxdWV1ZSA8IHBhaXIgPCBsbCAsIGxsID4gPigpOwogICAgdmlzLmFzc2lnbihuICwgdmVjdG9yIDxib29sID4gKG0gLCBmYWxzZSkpOwogICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgbiA7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwIDsgaiA8IG0gOyBqKyspIHsKICAgICAgICAgICAgaWYgKG1hdHJpeFtpXVtqXSA9PSAnQScpIHsKICAgICAgICAgICAgICAgIHEucHVzaChtYWtlX3BhaXIoaSAsIGopKTsKICAgICAgICAgICAgICAgIGh1bWFpbltpXVtqXSA9IDA7CiAgICAgICAgICAgICAgICB4MSA9IGkgIDsgeTE9IGogOwogICAgICAgICAgICAgICAgdmlzW2ldW2pdID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGJmcyhxLCBodW1haW4sIDEgKTsKCiAgICBib29sIHRlc3QgPSBmYWxzZTsKICAgIGludCB4ICwgeTsKICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspIHsKICAgICAgICBpZiAoaHVtYWluW2ldWzBdIDwgbW9uc3RlcltpXVswXSkgewogICAgICAgICAgICB4ID0gaSA7IHkgPSAwIDsKICAgICAgICAgICAgdGVzdCA9IDEgOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoaHVtYWluW2ldW20tMV0gPCBtb25zdGVyW2ldW20tMV0pIHsKICAgICAgICAgICAgeCA9IGkgOyB5ID0gbS0xIDsKICAgICAgICAgICAgdGVzdCA9IDEgOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKGludCBqID0gMCA7IGogPCBtICYmICF0ZXN0OyBqKyspIHsKICAgICAgICBpZiAoaHVtYWluWzBdW2pdIDwgbW9uc3RlclswXVtqXSkgewogICAgICAgICAgICB4ID0gMCA7IHkgPSBqOwogICAgICAgICAgICB0ZXN0ID0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGh1bWFpbltuLTFdW2pdIDwgbW9uc3RlcltuLTFdW2pdKSB7CiAgICAgICAgICAgIHggPSBuLTEgOyB5ID0gajsKICAgICAgICAgICAgdGVzdCA9IDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIXRlc3QpIHsKICAgICAgICBjb3V0IDw8ICJOTyIgPDwgZW5kbDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBjb3V0IDw8ICJZRVMiIDw8IGVuZGw7CiAgICBzdHJpbmcgcyA7CiAgICB3aGlsZSAocGFyZW50W3hdW3ldICE9ICcuJykgewoKICAgICAgICBzKz1wYXJlbnRbeF1beV0gOwogICAgICAgIGNoYXIgYyAgPSBwYXJlbnRbeF1beV0gIDsKICAgICAgICBpZiAoIGMgPT0gJ1InKSB7CiAgICAgICAgICAgIHkgLS0gOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjID09ICdMJykgewogICAgICAgICAgICB5ICsrIDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYyA9PSAnVScpIHsKICAgICAgICAgICAgeCArKyA7CiAgICAgICAgfQogICAgICAgIGVsc2UgeC0tIDsKICAgIH0KICAgIHJldmVyc2UoYWxsKHMpICkgOwogICAgY291dCA8PHMuc2l6ZSgpIDw8ZW5kbCA8PCBzPDxlbmRsIDsKCn0KCgoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCgogICAgbGwgdCA9IDE7CiAgICAvL2NpbiA+PiB0OwoKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9Cg==