#include <iostream>	

struct Rect {
	int width;
	int height;
	int max_width;
	int max_height;
	Rect() : width(0), height(0), max_width(0), max_height(0) {}
};

void show(Rect** DP, int H, int W)
{
	for (int i=0; i<H; i++) {
		for (int j=0; j<W; j++) std::cout << DP[i][j].width << "," << DP[i][j].height << " ";
		std::cout << std::endl;
	}
}

int main()
{
	int W, H;
	while (std::cin >> H >> W) {
		
		if (W==0) break;
	
		char** board = new char*[H];
		for (int i=0; i<H; i++) board[i] = new char[W];
		for (int i=0; i<H; i++) {
			for (int j=0; j<W; j++) std::cin >> board[i][j];
		}
		
		Rect** DP = new Rect*[H];
		for (int i=0; i<H; i++) DP[i] = new Rect[W];
		
		int max = 0;
		for (int i=0; i<H; i++) {
			for (int j=0; j<W; j++) {
				if (board[i][j] == '*') continue;
				if (i>0) {
					if (j>0) {
						DP[i][j].max_width = DP[i][j-1].max_width + 1;
						DP[i][j].max_height = DP[i-1][j].max_height + 1;
						int w = DP[i][j].max_width;
						int max_area = DP[i][j].max_height; // DP[i][j].max_height * 1
						int max_w = 1;
						int max_h = DP[i][j].max_height;
						for (int h=2; h<=DP[i][j].max_height; h++) {
							w = std::min(w, DP[i-h+1][j].max_width);
							if (max_area < h*w) {
								max_area = h*w;
								max_w = w;
								max_h = h;
							}
						}
						DP[i][j].width = max_w;
						DP[i][j].height = max_h;
					}
					else { // j==0
						DP[i][j].height = DP[i-1][j].height + 1;
						DP[i][j].max_height = DP[i-1][j].max_height + 1;
						DP[i][j].width = 1;
						DP[i][j].max_width = 1;
					}
				}
				else { // i==0
					DP[i][j].height = 1;
					DP[i][j].max_height = 1;
					if (j>0) {
						DP[i][j].width = DP[i][j-1].width + 1;
						DP[i][j].max_width = DP[i][j-1].max_width + 1;
					} else {
						DP[i][j].width = 1;
						DP[i][j].max_width = 1;
					}
				}
				
				if (max < DP[i][j].width * DP[i][j].height) {
					max = DP[i][j].width * DP[i][j].height;
				}
			}
		}
		//show(DP, H, W);
		std::cout << max << std::endl;
		
		for (int i=0; i<H; i++) delete[] board[i];
		delete[] board;
		for (int i=0; i<H; i++) delete[] DP[i];
		delete[] DP;
	}
	
	return 0;
}


