#include <bits/stdc++.h>
using namespace std;
namespace myspace{
#define ll long long
#define pii pair<int,int>
#define endl "\n"
#define file(filename) freopen(filename".in","r",stdin),freopen(filename".out","w",stdout)
#define debug(x) cout<<#x<<"="<<x<<endl
#define x first
#define y second
const int MAXN=2005;
const int INT_INF=2147483647;
const int INF=0x3f3f3f3f;
}
using namespace myspace;
int n,m;
bool maps[MAXN][MAXN];
int dp[MAXN][MAXN];
string way[MAXN][MAXN];
bool book[MAXN][MAXN];
int dfs(int x,int y){
if(dp[x][y]!=INF) return dp[x][y];
else if(!book[x][y]) {
book[x][y]=1;
if(y<m&&maps[x][y]!=maps[x][y+1]) if(dfs(x,y+1)+1<dp[x][y]) dp[x][y]=dfs(x,y+1)+1,way[x][y]='R'+way[x][y+1];
if(y>1&&maps[x][y]!=maps[x][y-1]) if(dfs(x,y-1)+1<dp[x][y]) dp[x][y]=dfs(x,y-1)+1,way[x][y]='L'+way[x][y-1];
if(x<n&&maps[x][y]!=maps[x+1][y]) if(dfs(x+1,y)+1<dp[x][y]) dp[x][y]=dfs(x+1,y)+1,way[x][y]='D'+way[x+1][y];
if(x>1&&maps[x][y]!=maps[x-1][y]) if(dfs(x-1,y)+1<dp[x][y]) dp[x][y]=dfs(x-1,y)+1,way[x][y]='U'+way[x-1][y];
return dp[x][y];
}
return INF;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char c;
cin>>c;
if(c=='0') maps[i][j]=0;
else maps[i][j]=1;
way[i][j]="";
book[i][j]=0;
dp[i][j]=INF;
}
}
dp[n][m]=0;
dfs(1,1);
if(dp[1][1]==INF){
cout<<-1<<endl;
}
else{
cout<<dp[1][1]<<endl;
cout<<way[1][1]<<endl;
}
}
return 0;
}