#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
queue<pair<int, int>>q;
int vi[8]= {-1, -1, -1, 0, 0, 1, 1, 1};
int vj[8]= {-1, 0, 1, -1, 1, -1, 0, 1};
int Rsi, Rsj;
int Jsi, Jsj;
int a[180][180];
int x,y, n, m, v, R[105][105], J[105][105];
void Lee(int a[105][105], int pi, int pj)
{
a[pi][pj]=1;
q.push({pi, pj});
while(!q.empty())
{
int i=q.front().first;
int j=q.front().second;
q.pop();
for(int v=0; v<8; v++)
{
int iv=i+vi[v];
int jv=j+vj[v];
if(a[iv][jv]==0)
{
q.push({iv,jv});
a[iv][jv]=a[i][j]+1;
}
}
}
}
int rez()
{
for(int i=0; i<=n+1; i++)
{
R[i][0]=-1;
J[i][0]=-1;
R[i][m+1]=-1;
J[i][m+1]=-1;
}
for(int i=0; i<=m+1; i++)
{
R[0][i]=-1;
J[0][i]=-1;
R[n+1][i]=-1;
J[n+1][i]=-1;
}
char s[105], c;
for(int i=1; i<=n; i++)
{
gets(s+1);
for(int j=1; j<=m; j++)
{
c=s[j];
if(c=='X')
{
R[i][j]=-1;
J[i][j]=-1;
}
else if(c=='R')
{
Rsi=i;
Rsj=j;
}
else if(c=='J')
{
Jsi=i;
Jsj=j;
}
scanf("\n");
}
}
Lee(R, Rsi, Rsj);
Lee(J, Jsi, Jsj);
int minim=n*m;
int pozi, pozj;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
if(R[i][j]==J[i][j] && R[i][j]<minim && R[i][j]>0)
{
minim=R[i][j];
pozi=i;
pozj=j;
}
printf("%d %d %d", minim, pozi, pozj);
}
int main()
{
int x;
freopen("rj.in", "r", stdin);
freopen("rj.out", "w", stdout);
scanf("%d %d\n", &n, &m);
rez();
return 0;
}