#include<bits/stdc++.h>
using namespace std;
const int N = 555;
int n, m;
int d[4][2] = { {1,0},{0,-1},{0,1},{-1,0} };
int path[N*N*10];
int dep[N*N*10];
char e[N][N];
int S,T;
char find(int a,int b)
{
if(b-a==1)return 'R';
if(b-a==(-1))return 'L';
if(b>a)return 'D';
return 'U';
}
void dfs(int t,int fa)
{
if(t==0)return ;
dfs(fa,path[fa]);
cout<<find(fa,t);
}
void bfs(int fir)
{
memset(path,-1,sizeof(path));
queue<int> q;
path[fir]=-2;
q.push(fir);
while(q.size())
{
int t=q.front();
if(t==T)break;
q.pop();
for(int i=0;i<4;i++)
{
int r=t/m+d[i][0],c=t%m+d[i][1];
if(r<0||r>=n||c<0||c>=m)continue;
if(e[r][c]=='1'||path[r*m+c]!=-1)continue;
path[r*m+c]=t;
dep[r*m+c]=dep[t]+1;
q.push(r*m+c);
}
}
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)cin >>e[i];
S=0,T=n*m-1;
bfs(S);
cout<<dep[T]<<endl;
dfs(T,path[T]);
return 0;
}