#include<iostream>
#include<stack>
#include<utility>
#include<algorithm>
 
using namespace std;

#define loop(i,a,b) for(int i=(a); i<(int)(b); i++)
#define rep(i,n) loop(i,0,n)

typedef vector<string> vs;
typedef vector<int> vi;

int solve(vs G){
    int w = G[0].size(), h = G.size();
    int res = 0;
    vi dp(w+1);
    rep(y,h){
        stack<pair<int,int> > s;
        rep(x,w+1){
            dp[x]= (G[y][x] == '.' /* free? */) ? dp[x] + 1 : 0;
            int l=x;
            while(!s.empty() && dp[x] < s.top().first){
                res = max(res,s.top().first*(x-s.top().second));
                l = s.top().second;
                s.pop();
            }
            s.push(make_pair(dp[x],l));
        }
    }
    return res;
}

int main(){
    for(int h,w;cin>>h>>w,h|w;){
        vs G(h);
        for(int y=0;y<h;y++) cin >> G[y];
        cout << solve(G) << endl;
    }
    return 0;
}