#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool camp(int a,int b)
{
return a>b;
}
int main()
{
int n,l,m;
while(cin>>n>>l>>m)
{
int b[n+1]={0},c[n]={0};
int p[n+1][l+1],sum=0,a=1;//p为破坏后的文章,sum为0的个数;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=l;j++)
{
cin>>p[i][j];
if(p[i][j]==0)
sum++;//最多的污点数;
}
for(int j=l;j>=1;j--)
{
if(p[i][j]==1)
break;
b[i]++;
}
if(i>1&&p[i][1]==0&&p[i][2]==0)//可能的段落;
{
c[a]=2+b[i-1];
a++;
}
}
sort(c+1,c+a,camp);//从大到小将每段空格数排序;
for(int i=1;i<=m-1&&i<a;i++)
sum-=c[i];//找出最可能为段的n-段;
cout<<sum-2-b[n]<<endl; //减去第一行的两个空格和最后一行剩的空格;
}
return 0;
}