#include<bits/stdc++.h>
using namespace std;
long long t,n,m,a[2005][2005],vis[2005][2005],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
char b[2005][2005];
struct f{
int x,y,js;
string s;
};
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>t;
while(t--){
queue<f>q;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>b[i][j];
if(b[i][j]=='1') a[i][j]=1;
}
}
q.push({1,1,0,""});
vis[1][1]=1;
int f=1;
while(q.size()){
int x=q.front().x,y=q.front().y,js=q.front().js;
string s=q.front().s;
q.pop();
if(x==n && y==m){
f=0;
cout<<js<<"\n"<<s<<"\n";
break;
}
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=1 && nx<=n && ny>=1 && ny<=m && a[nx][ny]!=a[x][y] && vis[nx][ny]==0){
vis[nx][ny]=1;
if(nx==x+1&&y==ny) q.push({nx,ny,js+1,s+"D"});
if(nx==x-1&&y==ny) q.push({nx,ny,js+1,s+"U"});
if(nx==x&&y+1==ny) q.push({nx,ny,js+1,s+"R"});
if(nx==x&&y-1==ny) q.push({nx,ny,js+1,s+"L"});
}
}
}
if(f==1) cout<<-1<<"\n";
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
a[i][j]=0,vis[i][j]=0;
}
}
}
return 0;
}