#include <stdio.h>
#include <iostream>
#include <algorithm>

int n;

using namespace std;
/*
int main(){
    n=1000;
    box = new int*[n];
    for(int i=0; i<n; i++)box[i] = new int[n];
    while(cin>>n){
        if(n==0)break;
        
        
        char c;
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                cin>>c;
                if(c=='.')box[i][j]=0;
                else box[i][j]=1;
            }
        }
        
        
        int ans=0;
        
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                if(box[i][j]==0){
                    bool flag=true;
                    for(int k=i; k<i+ans+1; k++){
                        if(k==n){
                            flag=false;
                            break;
                        }
                        for(int l=j; l<j+ans+1; l++){
                            if(l==n){
                                flag=false;
                                break;
                            }
                            if(box[k][l]==1){
                                flag=false;
                                break;
                            }
                        }
                        if(!flag)break;
                    }
                    if(flag){
                        ans++;
                        j--;
                    }
                    
                    
                    
                    
                }
            }
            
            
        }
        cout<<ans<<endl;
        
    }
    n=1000;
    for(int i=0; i<n; i++)delete[]  box[i];
    delete[]  box;
}

*/

/*
int main(){
    n=1000;
    box = new int*[n];
    for(int i=0; i<n; i++)box[i] = new int[n];
    while(cin>>n){
        if(n==0)break;
        
        
        char c;
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                cin>>c;
                if(c=='.')box[i][j]=0;
                else box[i][j]=1;
            }
        }
        
        
        int ans=0;
        
        for(int i=0; i<n; i++){
            if(ans>(n-i)*(n-i))break;
            for(int j=0; j<n; j++){
                if(ans>(n-j)*(n-j))break;
                
                if(box[i][j]==0){
                    int temp=1;
                    bool f=true;
                    for(int k=j; k<=j+ans; k++){
                        if(box[i][k]==1){
                            f=false;
                            break;
                        }
                        if(!f)break;
                    }
                    
                    while(1){
                        bool flag=true;
                        for(int k=i; k<=i+temp; k++){
                            if(k==n){
                                flag=false;
                                break;
                            }
                            if(box[k][j+temp]!=0){
                                flag=false;
                                break;
                            }
                        }
                        
                        for(int k=j; k<=j+temp; k++){
                            if(k==n){
                                flag=false;
                                break;
                            }
                            if(box[i+temp][k]!=0){
                                flag=false;
                                break;
                            }
                            
                        }
                        if(flag)temp++;
                        else break;
                    }
                    ans=max(ans, temp);
                    
                }
            }
            
            
        }
        cout<<ans<<endl;
        
    }
    n=1000;
    for(int i=0; i<n; i++)delete[]  box[i];
    delete[]  box;
}
*/

int main(){
    while(cin>>n){
        if(n==0)break;
        
        int box[1001][1001]={0};
        char c;
        for(int i=0; i<n; i++){
            int count=0;
            for(int j=0; j<n; j++){
                cin>>c;
                if(c=='.'){
                    count++;
                    box[i][j]=count;
                }
                else{
                    count=0;
                    box[i][j]=0;
                }
            }
        }
        
        
        int ans=0;
        
        for(int i=0; i<n; i++){
            for(int j=n-1; j>=0; j--){
                int temp=box[i][j];
                if(temp>ans){
                
                
                for(int k=i; k<i+box[i][j]; k++){
                    if(temp<=k-i)break;
                    temp=min(temp, box[k][j]);
                    
                }
                
                ans=max(temp, ans);
                }
            }
        }
        cout<<ans<<endl;
        
    }

}

Measured memory_bytes: 5080