#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,num=0,flag;
char b[4]{'L','Q','B','S'};
cin>>n>>m;
char a[n+1][m+1];
int c[n+1][m+1];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
c[i][j]=0;//是否有效步的标示数字
}
}
while (1)
{
flag=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if((a[i][j]==b[num%4]&&c[i][j]==1)||(num==0&&a[i][j]==b[num%4]))
{
c[i][j]=0;//在判断时要用这个值,后面要还原。
if(a[i-1][j]==b[(num+1)%4])
{
flag=1;
c[i-1][j]=1;
}
if(a[i+1][j]==b[(num+1)%4])
{
flag=1;
c[i+1][j]=1;
}
if(a[i][j-1]==b[(num+1)%4])
{
flag=1;
c[i][j-1]=1;
}
if(a[i][j+1]==b[(num+1)%4])
{
flag=1;
c[i][j+1]=1;
}
}
}
}
if(flag==0)//不能继续走了,找不到下一步,则退出寻找
{
cout<<(num+1)/4;
return 0;
}
if(num>2*(n+m))//无限循环
{
cout<<-1;
return 0;
}
num++;//继续走下一步
}
return 0;
}