using namespace std;
queue<int> qa,qb;
int n,m,x,y,ans,cnt,mx=-1,a[100010],b[100010];
char c[1510][1510];
bool f[1510][1510],vis[100010];
void bfs()
{
while(!qa.empty())
{
x=qa.front();
y=qb.front();
qa.pop();
qb.pop();
cnt++;
c[x][y]=0;
for(int i=-1;i<=1;i++)
{
for(int j=-1;j<=1;j++)
{
if(c[i+x][j+y]=='*'&&!f[i+x][j+y])
{
qa.push(i+x);
qb.push(j+y);
f[i+x][j+y]=1;
}
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cin>>c[i][j];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(c[i][j]=='*')
{
cnt=0;
qa.push(i);
qb.push(j);
bfs();
a[cnt]++;
if(!vis[cnt])
{
ans++;
vis[cnt]=1;
}
while(a[cnt]>=2)
{
a[cnt]-=2;
cnt*=2;
b[cnt]++;
}
mx=max(mx,cnt);
}
}
}
cout<<ans<<" "<<mx;
return 0;
}```