#include <iostream>
#include <string>
#include <stack>
#include <algorithm>

using namespace std;

int acc[1000][1000];

int main() {
    cin.tie(0);
    ios::sync_with_stdio(0);

    while(true) {
        int N;
        cin >> N;
        if(!N) break;
        for(int i = 0; i < N; ++i) {
            acc[0][i] = 0;
        }
        for(int i = 0; i < N; ++i) {
            string line;
            cin >> line;
            for(int c = 0; c < N; ++c) {
                if(i > 0) acc[i][c] = acc[i-1][c];
                if(line[c] == '*') acc[i][c] = 0;
                else acc[i][c]++;
            }
        }
        int ans = 0;
        for(int r = 0; r < N; ++r) {
            // スタックの中身は常に昇順になっている．
            stack<pair<int,int> > stk;
            for(int c = 0; c < N; ++c) {
                int len = 0;
                const int cur = acc[r][c];
                while(!stk.empty() && stk.top().first >= cur) {
                    len += stk.top().second;
                    if(len >= stk.top().first) {
                        ans = max(ans, stk.top().first);
                    }
                    stk.pop();
                }
                ++len;
                if(len >= cur) {
                    ans = max(ans, cur);
                }
                stk.push(make_pair(cur, len));
            }
            int len = 0;
            while(!stk.empty()) {
                len += stk.top().second;
                if(len >= stk.top().first) {
                    ans = max(ans, stk.top().first);
                    break;
                }
                stk.pop();
            }
        }
        cout << ans << endl;
    }
    return 0;
}