#include <cstdio>
#include <queue>
FILE *f=fopen("rj.in","r");
FILE *g=fopen("rj.out","w");
using namespace std;
struct coada
{
queue<int>i;
queue<int>j;
}qr,qj;
int a[105][105],b[105][105];
void saria(int i,int j,int k)
{
a[i][j]=k+1;
qr.i.push(i);
qr.j.push(j);
}
void faleea()
{
int i,j,k;
while(qr.i.empty()==0)
{
i=qr.i.front();
j=qr.j.front();
k=a[i][j];
if(a[i+1][j]==0)
saria(i+1,j,k);
if(a[i-1][j]==0)
saria(i-1,j,k);
if(a[i][j+1]==0)
saria(i,j+1,k);
if(a[i][j-1]==0)
saria(i,j-1,k);
if(a[i-1][j-1]==0)
saria(i-1,j-1,k);
if(a[i-1][j+1]==0)
saria(i-1,j+1,k);
if(a[i+1][j-1]==0)
saria(i+1,j-1,k);
if(a[i+1][j+1]==0)
saria(i+1,j+1,k);
qr.i.pop();
qr.j.pop();
}
}
void sarib(int i,int j,int k)
{
b[i][j]=k+1;
qj.i.push(i);
qj.j.push(j);
}
void faleeb()
{
int i,j,k;
while(qj.i.empty()==0)
{
i=qj.i.front();
j=qj.j.front();
k=b[i][j];
if(b[i+1][j]==0)
sarib(i+1,j,k);
if(b[i-1][j]==0)
sarib(i-1,j,k);
if(b[i][j+1]==0)
sarib(i,j+1,k);
if(b[i][j-1]==0)
sarib(i,j-1,k);
if(b[i-1][j-1]==0)
sarib(i-1,j-1,k);
if(b[i-1][j+1]==0)
sarib(i-1,j+1,k);
if(b[i+1][j-1]==0)
sarib(i+1,j-1,k);
if(b[i+1][j+1]==0)
sarib(i+1,j+1,k);
qj.i.pop();
qj.j.pop();
}
}
int main()
{
int n,m,i,j;
char c;
fscanf(f,"%d%d",&n,&m);
for(i=0;i<=n+1;i++)a[i][0]=a[i][m+1]=-2,b[i][0]=b[i][m+1]=-2;
for(i=0;i<=m+1;i++)a[0][i]=a[n+1][i]=-2,b[0][i]=b[n+1][i]=-2;
c=fgetc(f);
for(i=1;i<=n;i++)
{
while(c=='\n')c=fgetc(f);
for(j=1;j<=m;j++)
{
if(c=='X')a[i][j]=b[i][j]=-1;
if(c=='R'){qr.i.push(i),qr.j.push(j);a[i][j]=1;}//romeo -> a
if(c=='J'){qj.i.push(i),qj.j.push(j);b[i][j]=1;}//july -> b
c=fgetc(f);
}
}
faleea();
faleeb();
int tmin=999999,imin=0,jmin=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("\n\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
printf("%3d",b[i][j]);
printf("\n");
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j]&&a[i][j]!=-1&&a[i][j]!=0)
if(a[i][j]<tmin)
{tmin=a[i][j];imin=i,jmin=j;}
fprintf(g,"%d %d %d",tmin,imin,jmin);
return 0;
}