#include <stdio.h>
#include <string.h>
#define Nmax 100
#define Mmax 100
const int di[]={-1,-1,-1,0,0,1,1,1};
const int dj[]={-1,0,1,1,-1,-1,0,1};
char a[Nmax][Mmax];
int r[Nmax][Mmax], j[Nmax][Mmax];
int x[Nmax*Mmax], y[Nmax*Mmax];
int ri,rj,ji,jj;
int n, m;
void read()
{
freopen("rj.in","r",stdin);
scanf("%d %d", &n, &m);
char s[Mmax];
fgets(s,110,stdin);
for (int i=1; i<=n; ++i)
{
fgets(s,110,stdin);
for (int j=0; j<m; ++j)
{
a[i][j+1]=s[j];
if (a[i][j+1]=='R')
{
ri=i;rj=j+1;
a[i][j+1]=' ';
}
if (a[i][j+1]=='J')
{
ji=i;jj=j+1;
a[i][j+1]=' ';
}
}
}
fclose(stdin);
}
void sol(int m[Nmax][Mmax], int xx, int yy)
{
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
int e, u;
e=u=0;
x[e]=xx;y[e]=yy;
m[xx][yy]=1;
while (e<=u)
{
int i=x[e], j=y[e++];
for (int k=0; k<8; ++k)
if (a[i+di[k]][j+dj[k]]==' ' && (m[i+di[k]][j+dj[k]]>m[i][j]+1 || m[i+di[k]][j+dj[k]]==0))
{
m[i+di[k]][j+dj[k]]=m[i][j]+1;
x[++u]=i+di[k];
y[u]=j+dj[k];
}
}
}
void min()
{
freopen("rj.out","w",stdout);
int min, mini, minj;
for (int x=1; x<=n; ++x)
for (int y=1; y<=m; ++y)
if (r[x][y]==j[x][y])
if (min>r[x][y] && r[x][y]!=0)
{
min=r[x][y];
mini=x;minj=y;
}
printf("%d %d %d", min, mini, minj);
fclose(stdout);
}
int main()
{
read();
sol(r, ri, rj);
sol(j, ji, jj);
min();
return 0;
}