// traP is kyopuro circle
// -> true

#include <stdio.h>
#include <algorithm>
using namespace std;

int mp[525][525];

int get(int x,int y,int w,int h){
  int ret = mp[y+h-1][x+w-1];
  if(x>0) ret -= mp[y+h-1][x-1];
  if(y>0) ret -= mp[y-1][x+w-1];
  if(x>0 && y>0) ret += mp[y-1][x-1];
  return ret;
}

int main(){
  while(true){
    int h,w;
    scanf("%d%d",&h,&w);
    if(h==0 && w==0)break;
    for(int i=0;i<h;i++){
      char s[525];
      scanf("%s",&s);
      for(int j=0;j<w;j++){
        mp[i][j] = (s[j]=='*');
      }
    }
    for(int i=0;i<h;i++)for(int j=1;j<w;j++){
      mp[i][j] += mp[i][j-1];
    }
    for(int i=1;i<h;i++)for(int j=0;j<w;j++){
      mp[i][j] += mp[i-1][j];
    }
    int ans = 0;
    for(int x=0;x<w;x++)for(int y=0;y<h;y++){
      // hidari ue : (x,y)
      int hh = h-y;
      for(int ww=1;ww<=w-x;ww++){
        while(hh>0 && get(x,y,ww,hh)!=0)--hh;
        if(hh==0)break;
        int tmp = ww*hh;
        if(tmp>ans)ans=tmp;
      }
    }
    printf("%d\n",ans);
  }
  return 0;
}