#include <iostream>
#include <cstring>
using namespace std;
const int N=15;
char a[N][N];
int n;
int ans;
int dx[5]={-1,-1,1,1},dy[5]={-1,1,-1,1};
int dfs(int x,int y)
{
int num=0;
for(int i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];//要吃掉的位置
if(xx<1||xx>n||yy<1||yy>n) continue;
int xxx=xx+dx[i],yyy=yy+dy[i];//要去的位置
if(xxx<1||xxx>n||yyy<1||yyy>n) continue;
if(a[xx][yy]=='Q'&&a[xxx][yyy]=='.')
{
char tt=a[x][y];
a[x][y]='.';
a[xx][yy]='.';
a[xxx][yyy]='L';
num=max(num,1+dfs(xxx,yyy));
a[x][y]=tt;
a[xx][yy]='Q';
a[xxx][yyy]='.';
}
}
return num;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]=='L')
{
ans=max(ans,dfs(i,j));
}
}
}
cout<<ans<<endl;
return 0;
}