#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;

pair<int,int> solve(vs G){
    int w = G[0].size(), h = G.size(), res_area = 0;
    pair<int,int> res;
    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){
                int th = s.top().first, tw = x - s.top().second;
                int area = tw*th;
                if(res_area < area){
                    res_area = area;
                    res = make_pair(tw,th);
                }
                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);
        rep(y,h) cin >> G[y];
        auto ans = solve(G);
        cout << ans.first * ans.second << endl;
    }
}