#include<cstdio>
#define max(a,b) (a)>(b)?(a):(b)
int n,m,a[1505][1505],cnt,s[100005],starcnt,maxstar,fx[8][2]={{0,1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
bool vis[1505][1505];
void dfs(int sx,int sy)//深搜
{
cnt++;
vis[sx][sy]=true;
for(int i=0;i<8/*因为方向是8个方向*/;i++)
if(!vis[sx+fx[i][0]][sy+fx[i][1]]&&a[sx+fx[i][0]][sy+fx[i][1]])
dfs(sx+fx[i][0],sy+fx[i][1]);
}
int main()
{
scanf("%d %d\n",&n,&m);
for(int i=1;i<=n;i++)
{
char putin[1505];
scanf("%s\n",putin+1);
for(int j=1;j<=m;j++)
a[i][j]=putin[j]=='.'?0:1;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(!vis[i][j]&&a[i][j])
{
cnt=0;
dfs(i,j);
s[cnt]++;
}
for(int i=1;i<100000;i++)
if(s[i])
{
starcnt++;
maxstar=max(maxstar,i*s[i]);
}
printf("%d %d",starcnt,maxstar);
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojZGVmaW5lIG1heChhLGIpIChhKT4oYik/KGEpOihiKQppbnQgbixtLGFbMTUwNV1bMTUwNV0sY250LHNbMTAwMDA1XSxzdGFyY250LG1heHN0YXIsZnhbOF1bMl09e3swLDF9LHsxLDB9LHstMSwwfSx7MSwxfSx7MSwtMX0sey0xLDF9LHstMSwtMX19Owpib29sIHZpc1sxNTA1XVsxNTA1XTsKdm9pZCBkZnMoaW50IHN4LGludCBzeSkvL+a3seaQnCAKewogIGNudCsrOwogIHZpc1tzeF1bc3ldPXRydWU7CiAgZm9yKGludCBpPTA7aTw4Lyrlm6DkuLrmlrnlkJHmmK845Liq5pa55ZCRKi87aSsrKQogICAgIGlmKCF2aXNbc3grZnhbaV1bMF1dW3N5K2Z4W2ldWzFdXSYmYVtzeCtmeFtpXVswXV1bc3krZnhbaV1bMV1dKQogICAgICAgICAgICBkZnMoc3grZnhbaV1bMF0sc3krZnhbaV1bMV0pOwp9CmludCBtYWluKCkKewogIHNjYW5mKCIlZCAlZFxuIiwmbiwmbSk7CiAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgewogICAgY2hhciBwdXRpblsxNTA1XTsKICAgIHNjYW5mKCIlc1xuIixwdXRpbisxKTsKICAgIGZvcihpbnQgaj0xO2o8PW07aisrKQogICAgICBhW2ldW2pdPXB1dGluW2pdPT0nLic/MDoxOwogIH0KICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgICAgICBmb3IoaW50IGo9MTtqPD1tO2orKykKICAgICAgICAgICAgaWYoIXZpc1tpXVtqXSYmYVtpXVtqXSkKICAgICAgewogICAgICAgICAgICAgICAgY250PTA7CiAgICAgICAgICAgICAgICBkZnMoaSxqKTsKICAgICAgICAgICAgICAgIHNbY250XSsrOwogICAgICAgICAgICB9CiAgICBmb3IoaW50IGk9MTtpPDEwMDAwMDtpKyspCiAgICAgIGlmKHNbaV0pCiAgICAgIHsKICAgICAgICBzdGFyY250Kys7CiAgICAgICAgbWF4c3Rhcj1tYXgobWF4c3RhcixpKnNbaV0pOwogICAgfQogIHByaW50ZigiJWQgJWQiLHN0YXJjbnQsbWF4c3Rhcik7CiAgcmV0dXJuIDA7Cn0K