#include <iostream>
#include <vector>
#include <string>
#include <stack>
#define REP(i, a, b) for (int i = (a); i < (b); ++i)
#define rep(i, n) REP(i, 0, n)
#define mp make_pair
using namespace std;
int main()
{
	while (true) {
		int h, w; cin >> h >> w;
		if (!(h | w)) break;

		vector<string> 	grid(h);
		rep(i, h) cin >> grid[i];

		vector<vector<int> > hist(h, vector<int>(w+1, 0));
		rep(j, w) hist[0][j] = grid[0][j] == '.';
		REP(i, 1, h) rep(j, w) if (grid[i][j] == '.')
			hist[i][j] = hist[i-1][j] + 1;

		int res = 0;
		rep(i, h) {
			stack<pair<int, int> > S;
			rep(j, w+1) {
				if (S.empty() || S.top().first < hist[i][j])
					S.push(mp(hist[i][j], j));
				else if (S.top().first > hist[i][j]) {
					int pos = 0;
					while (!S.empty() && S.top().first >= hist[i][j]) {
						pair<int, int> p = S.top();
						S.pop();
						res = max(res, p.first * (j - p.second));
						pos = p.second;
					}
					S.push(mp(hist[i][j], pos));
				}
			}
		}
		cout << res << endl;
	}
	return 0;
}