#include <bits/stdc++.h>
using namespace std;
long long vis[2000][2000],cnt,n,color,ans;
char mp[2000][2000];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
struct node
{
int x,y;
};
struct ice
{
int size,lc;
}awr[2000];
void bfs(int x,int y)
{ cnt=ans=0;
queue<node> q;
node a={x,y};
q.push(a);
vis[x][y]=color;
while(!q.empty())
{
node k=q.front();
q.pop();
cnt++;
for(int i=0;i<4;i++)
{
int fx=k.x+dx[i];
int fy=k.y+dy[i];
if(!vis[fx][fy]&&fx>=1&&fx<=n&&fy>=1&&fy<=n&&mp[fx][fy]=='#')
{
vis[fx][fy]=color;
node p={fx,fy};
q.push(p);
}
else if(mp[fx][fy]=='.')
ans++;
}
}
}
bool cmp(ice a,ice b)
{
if(a.size>b.size)
return true;
else if(a.size<b.size)
return false;
else if(a.lc>b.lc)
return false;
else
return true;
}
main()
{
cin>>n;
for(int i=0;i<=n+1;i++)
for(int j=0;j<=n+1;j++)
mp[i][j]='.';
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>mp[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(!vis[i][j]&&mp[i][j]!='.')
{
color++;
bfs(i,j);
awr[color].size=cnt;
awr[color].lc=ans;
}
}
sort(awr,awr+color+1,cmp);
printf("%d %d",awr[0].size,awr[0].lc);
}