# define _CRT_SECURE_NO_WARNINGS 1
# include <iostream>
# include <string>
# include <bitset>
# include <vector>
# include <algorithm>
# include <cstdlib>
# include <cstdio>
# include <cstring>
# include <cstdlib>
# include <iomanip>
# include <queue>
# include <sstream>
# include <climits>
# include <cmath>
# include <list>
# include <functional>
# include <string>
# include <ctime>
# include <set>
# include <map>
# include <stack>
using namespace std;
# define M_PI 3.141592
# define FOR(i,n) for(int i=0;i<(int)n;i++)
# define FORI(i,k,n) for(int i=k;i<(int)n;i++)
# define toRad 2.0*M_PI/360.0
# define inin(x) int x;cin>>x;
# define all(x) x.begin(),x.end()
# define debug(x) cout<<#x<<" :"<<x<<endl;
# define rep(i,n) for(int i=0;i<(int)n;i++)
# define EPS 1e-12
# define CHECK(i,a) FOR(i,a.size())cout<<#a<<"["<<i<<"] : "<<a[i]<<endl; 

int main()
{
	int y, x;
	while (cin >> y >> x&&y)
	{
		int a[600][600] = {};
		for (int i = 1; i <= y; i++)
		{
			for (int l = 1; l <= x; l++)
			{

				char z; cin >> z;
				if (z == '*')a[i][l] = 1;
			}
		}

		for (int i = 1; i <= y; i++)
		{
			for (int l = 1; l <= x; l++)
			{
				a[i][l] += a[i][l - 1];
			}
		}
		for (int i = 1; i <= x; i++)
		{
			for (int l = 1; l <= y; l++)
			{
				a[l][i] += a[l - 1][i];
			}
		}

		int ans = 0;
		for (int i = 1; i <= y; i++)
		{
			for (int l = 1; l <= x; l++)
			{
				bool ok = true;
				for (int I = y; I >= i&&ok; I--)
				{
					for (int L = l; L <=x&&ok; L++)
					{
						int c = a[I][L];
						c += a[i - 1][l - 1];
						c -= a[i - 1][L];
						c -= a[I][l - 1];
						if (c == 0)
						{
							int d = (I - i + 1)*(L - l + 1);
							ans = max(ans, d);
						}
						else
						{
							break;
						}
					}
				}

			}
		}
		cout << ans << endl;
	}

}