#include <bits/stdc++.h>
using namespace std;

struct Rect {
	int height;
	int pos;
	Rect(int height = 0, int pos = 0) : height(height), pos(pos) {}
};

int main()
{
	int h, w;
	while (scanf("%d %d", &h, &w), h){
		vector<vector<int> > grid( h + 1, vector<int>(w + 1) );
		for (int i = 1; i <= h; i++){
			for (int j = 0; j < w; j++){
				char c;
				scanf(" %c", &c);
				if (c == '.'){
					grid[i][j] += grid[i - 1][j] + 1;
				}
			}
		}
		
		int res = 0;
		for (int i = 1; i <= h; i++){
			stack<Rect> sta;
			for (int j = 0; j <= w; j++){
				Rect rect(grid[i][j], j);
				if (sta.empty()){
					sta.push(rect);
				}
				else if (sta.top().height < rect.height){
					sta.push(rect);
				}
				else if (sta.top().height == rect.height){
					continue;
				}
				else if (sta.top().height > rect.height){
					Rect t;
					while (sta.size() && sta.top().height >= rect.height){
						t = sta.top(); sta.pop();
						int width = j - t.pos;
						res = max(res, width * t.height);
						//printf("%d %d\n", width, t.height);
					}
					rect.pos = t.pos;
					sta.push(rect);
				}
			}
		}
		printf("%d\n", res);
	}
	return 0;
}