#include <stdio.h>
#include <algorithm>
using namespace std;
char txt[11][1001];
int label[11];
int cnt[11];
int N,M,K;
int sol(int P){
	for(int i=0;i<P;i++) cnt[i]=0;
	int sum=0;
	for(int i=0;i<M;i++){
		int nxt[11]={0,};
		for(int j=0;j<N;j++){
			nxt[label[j]]+=txt[j][i]=='1';
		}
		bool flag = false;
		for(int j=0;j<P;j++){
			if(nxt[j]>K) return 987654321;
			if(nxt[j]+cnt[j]>K){
				flag=true;
				break;
			}
			else cnt[j]+=nxt[j];
		}
		if(flag){
			sum++;
			for(int j=0;j<P;j++) cnt[j]=nxt[j];
		}
		
	}
	return sum;
}
int main(){
	scanf("%d %d %d",&N,&M,&K);
	for(int i=0;i<N;i++) scanf("%s",txt[i]);
	int Min = N*M;
	for(int S=0;S<(1<<(N-1));S++){
		int l=0;
		for(int i=0;i<N;i++){
			label[i]=l;
			if(S&(1<<i)) l++;
		}
		Min = min(Min,l+sol(l+1));
	}
	printf("%d",Min);
}