#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
int a,b,nx,ny,ans[10000][10000],mp[2002][2002],dx[5]={0,0,0,-1,1},dy[5]={0,1,-1,0,0};
long long T,n,m;
int p[2000][2000];
string s;
char st[1000000];
queue < pair<int,int> > q;
void bfs(int x,int y){
p[x][y]=1;
q.push({x,y});
while(!q.empty()){
auto t=q.front();
for (int i=1;i<=4;i++){
nx=t.first+dx[i];
ny=t.second+dy[i];
if(nx>=1 && nx<=n && ny>=1 && ny<=m && p[nx][ny]==0 && mp[nx][ny]!=mp[t.first][t.second]){
q.push({nx,ny});
ans[nx][ny]=ans[t.first][t.second]+1;
p[nx][ny]=i;
}
if(nx==n && ny==m && mp[nx][ny]!=mp[t.first][t.second]){
return;
}
}
q.pop();
}
return;
}
int main (){
cin>>T;
for (int i=1;i<=T;i++){
cin>>n>>m;
for (int j=1;j<=n;j++){
cin>>s;
for (int k=1;k<=m;k++){
mp[j][k]=int(s[k-1])-48;
p[j][k]=0;
}
}
bfs(1,1);
if(ans[n][m]==0){
cout<<-1<<endl;
}
else{
a=n;
b=m;
cout<<ans[n][m]<<endl;
for (int j=ans[n][m];j>=1;j--){
if(p[a][b]==1){
st[j]='R';
b--;
}
else if(p[a][b]==2){
st[j]='L';
b++;
}
else if(p[a][b]==3){
st[j]='U';
a++;
}
else if(p[a][b]==4){
st[j]='D';
a--;
}
}
for (int j=1;j<=ans[n][m];j++){
cout<<st[j];
}
cout<<endl;
}
}
return 0;
}