#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <list>
#include <iostream>
#include <climits>
#include <cfloat>

typedef long long ll;

using namespace std;

char buf[512];
pair<int, int> width_pos[512][512];
int size[512];

int main()
{
	while (true)
	{
		int H, W;
		cin.getline(buf, sizeof(buf));
		sscanf(buf, "%d %d", &H, &W);
		if (H == 0 && W == 0)
			break;


		for (int i = 0; i <= W; ++i)
		{
			width_pos[i][0] = make_pair(0, 0);
			for (int j = 1; j <= H; ++j)
				width_pos[i][j] = make_pair(9999, 0);
			size[i] = 1;
		}

		int ans = 0;
		for (int i = 1; i <= H; ++i)
		{
			cin.getline(buf, sizeof(buf));
			int w = 0;
			for (int j = 1; j <= W; ++j)
			{
				if (buf[j-1] == '.')
				{
					++w;
				}
				else
				{
					w = 0;
				}

				for (int k = w; k > 0; --k)
					ans = max(ans, k * (i - lower_bound(width_pos[j], width_pos[j] + size[j], make_pair(k, 0))[-1].second));

				pair<int, int>* t = lower_bound(width_pos[j], width_pos[j] + size[j], make_pair(w, 0));
				*t = make_pair(w, i);
				size[j] = t - width_pos[j] + 1;
			}
		}
		printf("%d\n", ans);
	}

	return 0;
}