#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[110][110],b[110][110],i,j,n,m,ir,p,jr,ij,jj,co1[10010],co2[10010],u;
char v[110],c;
void fil(int l1,int c1,int l2,int c2,int u)
{
co1[u]=l1;
co2[u]=c1;
if(l1==l2 && c1==c2)
{
p=(a[l1][c1]-1)/2;
fout<<p<<" ";
for(int i=1;i<=u;i++)
{
if(a[co1[i]][co2[i]]==p+1)
fout<<co1[i]<<" "<<co2[i];
}
return;
}
else
{
if(a[l1+1][c1]==0)
{
a[l1+1][c1]=a[l1][c1]+1;
fil(l1+1,c1,l2,c2,u+1);
}
if(a[l1-1][c1]==0)
{
a[l1-1][c1]=a[l1][c1]+1;
fil(l1-1,c1,l2,c2,u+1);
}
if(a[l1][c1+1]==0)
{
a[l1][c1+1]=a[l1][c1]+1;
fil(l1,c1+1,l2,c2,u+1);
}
if(a[l1][c1-1]==0)
{
a[l1][c1-1]=a[l1][c1]+1;
fil(l1,c1-1,l2,c2,u+1);
}
if(a[l1+1][c1+1]==0)
{
a[l1+1][c1+1]=a[l1][c1]+1;
fil(l1+1,c1+1,l2,c2,u+1);
}
if(a[l1-1][c1-1]==0)
{
a[l1-1][c1-1]=a[l1][c1]+1;
fil(l1-1,c1-1,l2,c2,u+1);
}
if(a[l1-1][c1+1]==0)
{
a[l1-1][c1+1]=a[l1][c1]+1;
fil(l1-1,c1+1,l2,c2,u+1);
}
if(a[l1+1][c1-1]==0)
{
a[l1+1][c1-1]=a[l1][c1]+1;
fil(l1+1,c1-1,l2,c2,u+1);
}
}
}
void fil1(int l1,int c1,int l2,int c2)
{
if(l1==l2 && c1==c2)
{
return;
}
else
{
if(b[l2+1][c2]==0)
{
b[l2+1][c2]=b[l2][c2]+1;
fil1(l1,c1,l2+1,c2);
}
if(b[l2-1][c2]==0)
{
b[l2-1][c2]=b[l2][c2]+1;
fil1(l1,c1,l2-1,c2);
}
if(b[l2][c2+1]==0)
{
b[l2][c2+1]=b[l2][c2]+1;
fil1(l1,c1,l2,c2+1);
}
if(b[l2][c2-1]==0)
{
b[l2][c2-1]=b[l2][c2]+1;
fil1(l1,c1,l2,c2-1);
}
}
}
int main()
{
fin>>n>>m;
fin.getline(v,100);
for(i=1;i<=n;i++)
{
fin.getline(v,100);
for(j=0;j<strlen(v);j++)
{
c=v[j];
if(c=='X')
a[i][j+1]=-1;
else
a[i][j+1]=0;
if(c=='R')
{
ir=i;
jr=j+1;
}
if(c=='J')
{
ij=i;
jj=j+1;
}
b[i][j+1]=a[i][j+1];
}
}
for(i=1;i<=m;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
b[0][i]=-1;
b[n+1][i]=-1;
}
for(i=1;i<=n;i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
b[i][0]=-1;
b[i][m+1]=-1;
}
a[ir][jr]=1;
b[ij][jj]=1;
fil(ir,jr,ij,jj,1);
return 0;
}