#include<iostream>
#include<cstdio>
using namespace std;
const int N=35;
int n,m,tot,can;
int sx,sy,tx,ty;
bool vis[N][N],mp[N][N];
int f[N][N][4],g[N][N][4][2];
int dx[4]={-1,1,0,0},
dy[4]={0,0,-1,1};
char t[4]={'U','D','L','R'},outp[N*N*N<<4];int cnt;
char s[N];
int stk[N*N],top;
int spc[N*N],len;
int op[N*N*N],k;
void dfs(int x,int y,int dir){
if(x==tx&&y==ty) len=top,memcpy(spc,stk,sizeof stk);
vis[x][y]=true,can++;
for(int d=0;d<4;d++){
int xx=x+dx[d],yy=y+dy[d];
if(!mp[xx][yy]||vis[xx][yy]) continue;
stk[++top]=d,op[++k]=d,dfs(xx,yy,d);
}
if(dir<4) op[++k]=dir^1;
top--;
}
void walk(int *a,int len){
for(int i=1;i<=len;i++){
int to=a[i];
for(int j=1;j<=g[sx][sy][to][1];j++) printf("%c",outp[++cnt]=t[to^1]);
for(int j=1;j<=g[sx][sy][to][0];j++) printf("%c",outp[++cnt]=t[to]);
sx=sx+dx[to],sy=sy+dy[to];
}
}
void solve(int x,int y,int d){
if(f[x][y][d]<2) return ;
if(f[x][y][d^1]>=f[tx][ty][d]){
g[x][y][d][1]=f[tx][ty][d]-1;
g[x][y][d][0]=f[tx][ty][d];
}
else g[x][y][d][0]=g[x][y][d][1]=f[x][y][d^1];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%s",s+1);
for(int j=1;j<=m;j++)
mp[i][j]=s[j]-'0',tot+=mp[i][j];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(!mp[i][j]) continue;
f[i][j][0]=f[i-1][j][0]+1;
f[i][j][2]=f[i][j-1][2]+1;
}
for(int i=n;i>=1;i--)
for(int j=m;j>=1;j--){
if(!mp[i][j]) continue;
f[i][j][1]=f[i+1][j][1]+1;
f[i][j][3]=f[i][j+1][3]+1;
}
scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
dfs(sx,sy,4);
if(can<tot) return 0*printf("-1");
for(int i=1;i<=k;i++) printf("%c",t[op[i]]);
for(int i=1;i<=len;i++) printf("%c",t[spc[i]]);
putchar('\n');
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(mp[i][j])
for(int d=0;d<4;d++)
solve(i,j,d);
walk(op,k),walk(spc,len);
while(cnt) printf("%c",outp[cnt--]);
}