#include <iostream>

using namespace std;

const int N = 305;

int min(int a, int b){
    return (a<=b ? a : b);
}

void reset (int * fila, int C){
    for (int i=0;i<C; i++)
        fila[i]=0;
}

int minAncho(int * fila, int C, int K){
    /*
    Devuelve el ancho minimo de un subarreglo de 'fila' que contiene al menos K butacas disponibles
    */
    int ancho=N*N, j=0, acum=0;
    for (int i=0;i<C;i++){
        acum+=fila[i];
        while (acum>=K && j<C){
            ancho=min(i-j+1,ancho);
            acum-=fila[j];
            j++;
        }
    }
    return ancho;
}



int main(){
    bool matrix[N][N];
    int fila[N],R,C,K,solucion;
    char x;

    while (cin>>R>>C>>K && R && C && K){
        solucion=R*C;
        for (int i=0; i<R; i++)
            for (int j=0; j<C; j++){
                cin>>x;
                matrix[i][j] = (x=='.' ? 1 : 0);
            }

        for (int i=0; i<R; i++){
            reset(fila,C);
            for (int j=i; j<R; j++){
                for (int q=0; q<C; q++){
                    fila[q]+=matrix[j][q];
                }
                solucion=min(solucion,minAncho(fila,C,K)*(j-i+1));
            }
        }
        cout<<solucion<<endl;;
    }

    return 0;
}

