#include<iostream>
#include<algorithm>
#include<vector>
#include<cstdio>
using namespace std;
typedef vector<vector<char> > vvc;
typedef vector<vector<int> > vvi;

int dfs(vvc& G,vvi& G2,int x,int y,int cost)
{
  if(G[y][x] == '*' || x >= G[y].size())
    return cost;
  
  int nx = x + 1;
  int res = dfs(G,G2,nx,y,cost+1);
  G2[y][x] = res-cost;  
  return res;
}

int main()
{
  int H,W;
  while(cin >> H >> W,H|W)
    {
      vector<vector<char> > G;
      G.resize(H);
      vector<vector<int> > G2;
      G2.resize(H);
      for(int i=0;i<H;i++)
	{
	  G[i].resize(W);
	  G2[i].resize(W);
	  string line;
	  cin >> line;
	  for(int j=0;j<W;j++)
	    G[i][j] = line[j],G2[i][j] = -1;     
	}

      for(int i=0;i<H;i++)
	for(int j=0;j<W;j++)
	  if(G2[i][j] == -1 && G[i][j] != '*')
	    G2[i][j] = dfs(G,G2,j,i,1)-1;
  
      int mex = 0;
      for(int i=0;i<H;i++)
	for(int j=0;j<W;j++)
	  if(G[i][j] == '.')
	    {
	      int pre = (1<<29);
	      for(int k=i;k<H&&G[k][j] != '*';k++)
		{
		  pre = min(pre,G2[k][j]);
		  mex = max(mex,pre*(k-i+1)); 
		}
	
	    }     
	  cout << mex << endl;


    }
  return 0;
}