#include<bits/stdc++.h>
using namespace std;
const int N = 2e3+10;
int g[N][N];
int n,m;
int T;
int d[N][N];
char pre[N][N];
pair<int,int> p[N][N];
int dx[]={0,1,-1,0};
int dy[]={1,0,0,-1};
char a[]={'R','D','U','L'};
void bfs()
{
for(int i = 0;i<=n+1;i++)
{
for(int j = 0;j<=m+1;j++)
{
d[i][j]=-1;
}
}
d[1][1]=0;
p[1][1]={-1,-1};
pre[1][1]='p';
queue<pair<int,int>> q;
q.push({1,1});
while(q.size())
{
auto t = q.front();
q.pop();
int x = t.first,y = t.second;
for(int i = 0;i<3;i++)
{
int xx = dx[i]+x,yy = y+dy[i];
if(d[xx][yy]==-1&&g[xx][yy]==(g[x][y]==1 ? 0 : 1)&&xx&&yy&&xx<=n&&yy<=m)
{
d[xx][yy]=d[x][y]+1;
pre[xx][yy]=a[i];
p[xx][yy]={x,y};
q.push({xx,yy});
}
}
}
}
int main()
{
cin>>T;
while(T--)
{
cin>>n>>m;
getchar();
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=m;j++)
{
char a;
a = getchar();
g[i][j] = a-'0';
}
getchar();
}
bfs();
if(d[n][m]==-1)
{
cout<<-1<<endl;
}
else{
cout<<d[n][m]<<endl;
int i,j;
i = n,j = m;
string ans="";
while(pre[i][j]!='p')
{
ans+=pre[i][j];
int x = p[i][j].first,y = p[i][j].second;
i = x,j = y;
}
for(int i=ans.size()-1;i>=0;i--) cout<<ans[i];
cout<<endl;
}
}
return 0;
}