#include
#include
#include
#include
using namespace std;
int prev_step[1005][1005];
int main()
{
ios_base::sync_with_stdio(false);
cout.tie(0);
cin.tie(0);
int n, m;
cin >> n >> m;
char mat[n][m];
bool visited[n][m];
int si, sj;
int ei, ej;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
visited[i][j] = false;
cin >> mat[i][j];
if(mat[i][j] == 'A'){
si = i;
sj = j;
}
if(mat[i][j] == 'B') {
ei = i;
ej = j;
}
}
}
cout << endl;
queue q;
q.push(si);
q.push(sj);
q.push(0);
visited[si][sj] = true;
int di[] = {1, -1, 0, 0};
int dj[] = {0, 0, 1, -1};
while(!q.empty()){
int ci = q.front();
q.pop();
int cj = q.front();
q.pop();
int dist = q.front();
q.pop();
if(mat[ci][cj] == 'B'){
break;
}
for(int i = 0; i < 4; i++){
if(ci + di[i] < n and ci + di[i] >= 0 and cj + dj[i] < m and cj + dj[i] >= 0 and mat[ci + di[i]][cj + dj[i]] != '#' and !visited[ci + di[i]][cj + dj[i]]){
q.push(ci + di[i]);
q.push(cj + dj[i]);
q.push(dist + 1);
prev_step[ci + di[i]][cj + dj[i]] = i;
visited[ci + di[i]][cj + dj[i]] = true;
}
}
}
if(visited[ei][ej]) {
cout << "YES" << endl;
pair S = make_pair(si, sj);
pair E = make_pair(ei, ej);
string result = "";
while(E != S) {
int p_cekor = prev_step[E.first][E.second];
if(p_cekor == 0) {
result += "D";
}
else if(p_cekor == 1) {
result += "U";
}
else if(p_cekor == 2) {
result += "R";
}
else {
result += "L";
}
E = make_pair(E.first - di[p_cekor], E.second - dj[p_cekor]);
}
reverse(result.begin(), result.end());
cout <