#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <cstdlib>
#define MAX 4
using namespace std;
int Vis[MAX][MAX];
int N;
int Max;
int Count;
void Initial()
{
memset(Vis,0,sizeof(Vis));
Max = 0;
Count = 0;
}
bool Judge(int x,int y) {
for(int i=x-1;i>=0;i--)
{
if(Vis[i][y]==1)return false;
if(Vis[i][y]==2)break;
}
for(int j=y-1;j>=0;j--)
{
if(Vis[x][j]==1)return false;
if(Vis[x][j]==2)break;
}
return true;
}
void search(int x,int y)//访问没一个点
{
if(Max < Count) Max = Count;
while(x < N)
{
if(y <= N-1 && !Vis[x][y] && Judge(x,y))
{
Vis[x][y] = 1;
Count++;
search(x,y+1);
Count--;
Vis[x][y] = 0;
}
if(y > N-1){x++; y =0;}
else y++;
}
}
int main()
{
//freopen("in.cpp","r",stdin);
while(cin>>N && N)
{
char c;
Initial();
for(int i = 0;i < N;i++)
for(int j = 0;j < N;j++)
{
cin>>c;
if(c == 'X')
Vis[i][j] = 2;
}
search(0,0);
cout<<Max<<endl;
}
return 0;
}