#include <iostream>
using namespace std;
#define MAX 101
#define INF 0x7fffffff
int sumOfMat(int i, int j, int width, int length, int(&arr)[MAX][MAX]){
// 统计从(i,j)为首的矩阵的所有元素和
    int sum;
    sum=arr[i+width-1][j+length-1]-arr[i-1][j+length-1]-arr[i+width-1][j-1]+arr[i-1][j-1];
    return sum;
}
int minMatArea(int n, int m, int k, int(&arr)[MAX][MAX]) { // 使用引用传递二维数组
    int minArea = INF; 
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            for(int width=1;width<=n-i+1;width++){ // 特别注意 width、length上界
                for(int length=1;length<=m-j+1;length++){
                    int curSum=sumOfMat(i, j, width, length, arr);                 
                    if(curSum>=k && minArea>=width*length){
                        // 更新条件:1、sum >= k 2、area最小
                        minArea=width*length;
                    }
                }
            }
        }
    }
    if(minArea==INF) minArea=-1;
    return minArea;
}
int main() {
    int arr[MAX][MAX]={0}; // 首行列全部初始化为0
    int n, m, k;
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) { // 读取数据,并计算前缀和矩阵
        for (int j = 1; j <= m; j++) {
            cin >> arr[i][j];
            arr[i][j]+=arr[i-1][j]+arr[i][j-1]-arr[i-1][j-1];
        }
    }
    cout << minMatArea(n, m, k, arr) << endl;
    return 0;
}