#include<bits/stdc++.h>
#include<string>
#define ll long long
#define N 2010
using namespace std;
const int INF=0x3f3f3f3f;
int lok[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
struct node{int x,y;};
char a[N][N];
string str[4]={"R","D","L","U"};
queue<node>q;
int vis[N][N];
map<int,int> mp;
map<int,string> pre;
int bfs(int n,int m){
mp[11]=0;
node s1;
s1.x=1;
s1.y=1;
vis[1][1]=1;
q.push(s1);
while(!q.empty()){
node t=q.front();
q.pop();
if(t.x==n&&t.y==m){
return mp[n*10+m];
}
int x=t.x;
int y=t.y;
for(int i=0;i<=3;i++){
int nx=x+lok[i][0];
int ny=y+lok[i][1];
if(nx<1||nx>n||ny<1||ny>m)continue;
if(a[x][y]==a[nx][ny]||vis[nx][ny])continue;
vis[nx][ny]=1;
node next;
next.x=nx;
next.y=ny;
q.push(next);
mp[nx*10+ny]=mp[x*10+y]+1;
pre[nx*10+ny]=pre[x*10+y]+str[i];
}
}
return -1;
}
int main(){
int t;
cin>>t;
for(int i=1;i<=t;i++){
int n,m;
cin>>n>>m;
memset(vis,0,sizeof(vis));
for(int k=1;k<=n;k++){
for(int j=1;j<=m;j++){
cin>>a[k][j];
}
}
int x=bfs(n,m);
cout<<x<<endl;
if(x!=-1){
cout<<pre[n*10+m]<<endl;
}
}
return 0;
}