#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int n,m;
string ans;
//priority_queue< string, vector<string>, greater<string>> ans;
unordered_map<char,pair<int,int>>graph;
bool valid(int a, int b)
{
if(a<0||b<0||a>=n||b>=m)return false;
return true;
}
string path(int a2,int b2,int a1,int b1,vector<vector<char>>&steps)
{
if(a1==a2&&b1==b2)return ans;
auto temp=graph[steps[a2][b2]];
ans+=steps[a2][b2];
path(a2-temp.first,b2-temp.second,a1,b1,steps);
return ans;
}
int main() {
cin>>n>>m;
int flag=0;
int a,b;
vector<vector<char>>arr(n,vector<char>(m));
vector<vector<char>>steps(n,vector<char>(m));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>arr[i][j];
if(arr[i][j]=='A')a=i,b=j;
}
}
arr[a][b]='.';
deque <pair<int,int>> Q;
Q.push_back({a,b});
vector<pair<pair<int,int>, char>> dir
{
{{-1,0},'U'}, {{0,1},'R'}, {{0,-1},'L'}, {{1,0},'D'}
};
for(auto x: dir)
{
graph[x.second]=x.first;
}
while(Q.size())
{
int a1=Q.front().first;
int b1=Q.front().second;
Q.pop_front();
// cout<<a1<<b1<<arr[a1][b1]<<endl;
if(arr[a1][b1]=='B')
{
string ok=path(a1,b1,a,b,steps);
reverse(ok.begin(),ok.end());
cout<<"YES"<<endl<<ok.size()<<endl<<ok;
flag=1;
break;
}
else
arr[a1][b1]='#';
for(auto x : dir)
{
int a2=x.first.first + a1;
int b2=x.first.second + b1;
int d=x.second;
// cout<<a2<<b2<<arr[a2][b2]<<endl;
if(valid(a2,b2) and arr[a2][b2]!='#')
{
Q.push_back({a2,b2});
if(arr[a2][b2]!='B')
arr[a2][b2] ='#';
steps[a2][b2]=d;
}
}
}
if(!flag)cout<<"NO";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbixtOwogCnN0cmluZyBhbnM7Ci8vcHJpb3JpdHlfcXVldWU8IHN0cmluZywgdmVjdG9yPHN0cmluZz4sIGdyZWF0ZXI8c3RyaW5nPj4gYW5zOwp1bm9yZGVyZWRfbWFwPGNoYXIscGFpcjxpbnQsaW50Pj5ncmFwaDsKIAogCmJvb2wgdmFsaWQoaW50IGEsIGludCBiKQp7CglpZihhPDB8fGI8MHx8YT49bnx8Yj49bSlyZXR1cm4gZmFsc2U7CglyZXR1cm4gdHJ1ZTsKfQogCnN0cmluZyBwYXRoKGludCBhMixpbnQgYjIsaW50IGExLGludCBiMSx2ZWN0b3I8dmVjdG9yPGNoYXI+PiZzdGVwcykKewoJaWYoYTE9PWEyJiZiMT09YjIpcmV0dXJuIGFuczsKCQoJYXV0byB0ZW1wPWdyYXBoW3N0ZXBzW2EyXVtiMl1dOwoJCglhbnMrPXN0ZXBzW2EyXVtiMl07CgkKCXBhdGgoYTItdGVtcC5maXJzdCxiMi10ZW1wLnNlY29uZCxhMSxiMSxzdGVwcyk7CgkKCXJldHVybiBhbnM7Cn0KIAppbnQgbWFpbigpIHsKCQoJY2luPj5uPj5tOwoJaW50IGZsYWc9MDsKCWludCBhLGI7CgkKCXZlY3Rvcjx2ZWN0b3I8Y2hhcj4+YXJyKG4sdmVjdG9yPGNoYXI+KG0pKTsKCXZlY3Rvcjx2ZWN0b3I8Y2hhcj4+c3RlcHMobix2ZWN0b3I8Y2hhcj4obSkpOwoJCglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWZvcihpbnQgaj0wO2o8bTtqKyspCgkJewoJCQljaW4+PmFycltpXVtqXTsKCQkJaWYoYXJyW2ldW2pdPT0nQScpYT1pLGI9ajsKCQl9Cgl9CgkKIAoJYXJyW2FdW2JdPScuJzsKCQoJCglkZXF1ZSA8cGFpcjxpbnQsaW50Pj4gUTsKCQoJUS5wdXNoX2JhY2soe2EsYn0pOwoJCgl2ZWN0b3I8cGFpcjxwYWlyPGludCxpbnQ+LCBjaGFyPj4gZGlyCgl7CgkJe3stMSwwfSwnVSd9LCB7ezAsMX0sJ1InfSwge3swLC0xfSwnTCd9LCB7ezEsMH0sJ0QnfQoJfTsKCQoJZm9yKGF1dG8geDogZGlyKQoJewoJCWdyYXBoW3guc2Vjb25kXT14LmZpcnN0OwoJfQoJCgkKCXdoaWxlKFEuc2l6ZSgpKQoJewoJCWludCBhMT1RLmZyb250KCkuZmlyc3Q7CgkJaW50IGIxPVEuZnJvbnQoKS5zZWNvbmQ7CgkJCgkJUS5wb3BfZnJvbnQoKTsKCQkKCS8vCWNvdXQ8PGExPDxiMTw8YXJyW2ExXVtiMV08PGVuZGw7CgkJCgkJaWYoYXJyW2ExXVtiMV09PSdCJykKCQl7CgkJCXN0cmluZyBvaz1wYXRoKGExLGIxLGEsYixzdGVwcyk7CgkJCXJldmVyc2Uob2suYmVnaW4oKSxvay5lbmQoKSk7CgkJCWNvdXQ8PCJZRVMiPDxlbmRsPDxvay5zaXplKCk8PGVuZGw8PG9rOwoJCQlmbGFnPTE7IAoJCQlicmVhazsKCQl9CgkJCgkJZWxzZSAJCgkJYXJyW2ExXVtiMV09JyMnOwoJCQoJCWZvcihhdXRvIHggOiBkaXIpCgkJewoJCQlpbnQgYTI9eC5maXJzdC5maXJzdCArIGExOwoJCQlpbnQgYjI9eC5maXJzdC5zZWNvbmQgKyBiMTsKCQkJaW50IGQ9eC5zZWNvbmQ7CgkJCQoJCS8vCWNvdXQ8PGEyPDxiMjw8YXJyW2EyXVtiMl08PGVuZGw7CgkJCQoJCQlpZih2YWxpZChhMixiMikgYW5kIGFyclthMl1bYjJdIT0nIycpCgkJCXsKCQkJCVEucHVzaF9iYWNrKHthMixiMn0pOwoJCQkJaWYoYXJyW2EyXVtiMl0hPSdCJykKCQkJCWFyclthMl1bYjJdID0nIyc7CgkJCQlzdGVwc1thMl1bYjJdPWQ7CgkJCX0KCQkJCgkJfQoJCQoJCgkJCgl9CgkKCQoJaWYoIWZsYWcpY291dDw8Ik5PIjsKCQoJCn0K