#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <algorithm>
#include <list>
#include <stack>
#include <queue>
using namespace std;

typedef list<int> L;
typedef pair <int,int> P;
typedef vector<int> V;
typedef queue<int> Q;
typedef stack<int> S;
typedef map<string,int> M;

int main()
{
    int H, W;
    
    while (cin >> H >> W, H) {
        char d[H][W];
        int ansW = 500, ansH = 500, ans = -1;
        for (int i = 0; i < H; i++)
            for (int j = 0; j < W; j++)
                cin >> d[i][j];

        for (int i = 0; i < H; i++) {
            for (int j = 0; j < W; j++) {
                if (d[i][j] == '.') {
                    int k = 0;
                    while (d[i + k][j] == '.' && i + k < H) {
                        k++;
                        ansW = 999;
                        for (int l = i; l < i + k; l++) {
                            int m = 0;
                            while (d[l][j + m] == '.' && j + m < W) m++;
                            ansW = min(ansW, m);
                        }
                        ansH = k;
                        ans = max(ans, ansW * ansH);
                    }
                        
                }
            }
        }
        cout << ans << endl;
    }
    
    
    return 0;
}