#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <set>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()

typedef pair<int,int> pii;
int main() {
  int h,w;
  while(cin>>h>>w,w+h) {
    char ba[w][h];
    REP(y,h)
      REP(x,w) 
        cin >> ba[x][y];
    vector<pii> dp[w][h];
    int ans = 0;
    REP(y,h) {
      REP(x,w) {
        if (ba[x][y]=='.') {
          set<pii> tmpset;
          int ue = 0, hidari = 0;
          for (int i = y-1; i>=0 && ba[x][i]=='.'; i--) ue++;
          for (int i = x-1; i>=0 && ba[i][y]=='.'; i--) hidari++;
          if (ue>0&&hidari>0) {
            FOR(it,dp[x-1][y]) {
              tmpset.insert(pii((*it).first+1, min(ue+1,(*it).second)));
            }
            FOR(it,dp[x][y-1]) {
              tmpset.insert(pii(min(hidari+1,(*it).first), (*it).second+1));
            }
            tmpset.insert(pii(1,ue+1));
            tmpset.insert(pii(hidari+1,1));
          } else {
            tmpset.insert(pii(hidari+1,ue+1));
          }
          // cout << hidari << " "<<ue;  
          FOR(it,tmpset) {
            int f = 0;
            FOR (it2,dp[x][y]) {
              if ((*it).first<=(*it2).first && (*it).second<=(*it2).second) {
                f = 1;
                break;
              }
            }
            dp[x][y].push_back(*it);
            // printf("(%d,%d)",(*it).first,(*it).second);
            ans = max(ans, (*it).first*(*it).second);
          }
        }
         // cout << " ";
      }
       // cout << endl;
    }
    cout << ans << endl;
  }
}