#include <bits/stdc++.h>
using namespace std;
int m,n,k;
int min_s=10001;
int mp[100][100];
/*mp:
1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16
*/
void cal(int x,int y)
{
    int temp[m][n];
    //竖
    for(int i=x;i<m;i++)
    {
        temp[i][y]=mp[i][y];
        if(temp[i][y]>=k) min_s=min(min_s,1); 
    }
/*temp:(以x=0,y=0为例)
1  * * *
5  * * * 
9  * * *
13 * * * 
*/
    for(int i=x+1;i<m;i++)
    {
        temp[i][y]=temp[i-1][y]+mp[i][y];
        if(temp[i][y]>=k) min_s=min(min_s,i-x+1);
    }
/*temp:
1  * * *
6  * * * 
15 * * *
28 * * * 
*/
    //横
    for(int i=y;i<n;i++)
    {
        temp[x][i]=mp[x][i];
        if(temp[x][i]>=k) min_s=min(min_s,1);
    }
/*temp:
1 2 3 4
* * * * 
* * * *
* * * * 
*/
    for(int i=y+1;i<n;i++)
    {
        temp[x][i]=temp[x][i-1]+mp[x][i];
        if(temp[x][i]>=k) min_s=min(min_s,i-y+1);
    }
/*temp:
1 3 6 10
* * * * 
* * * *
* * * * 
*/
    for(int i=x+1;i<m;i++)
    {
        for(int j=y+1;j<n;j++)
        {//(x,y)是左上角,(i,j)是右下角
            temp[i][j]=temp[i-1][j]+temp[i][j-1]-temp[i-1][j-1]+mp[i][j];
            if(temp[i][j]>=k) min_s=min(min_s,(i-x+1)*(j-y+1)); 
        }
    }
}
int main() {
    while(cin>>m>>n>>k)
    {
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                cin>>mp[i][j];
            }
        }
        //以上是处理输入
        //接下来将每个坐标作为矩阵的左上角
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                cal(i,j);
            }
        }
        if(min_s==10001) cout<<"-1"<<endl;
        else cout<<min_s<<endl;
    }
}
// 64 位输出请用 printf("%lld")