#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;
typedef pair<int,int>P;

const int MOD=998244353;
const int INF=0x3f3f3f3f;
const ll INFL=0x3f3f3f3f3f3f3f3f;

char s[20][2000];
int main(){
	int h,w,K;cin>>h>>w>>K;
	rep(i,h)scanf("%s",s[i]);
	int Min=INT_MAX;
	rep(i,1<<(h-1)){
		vector<int>v{0,h};
		rep(j,h-1){
			if(i>>j&1)v.push_back(j+1);
		}
		sort(v.begin(),v.end());
		int cnt=0;
		int d[15]{};
		rep(k,w){
			bool flag=false;
			rep(j,v.size()-1){
				for(int t=v[j];t<v[j+1];t++){
					d[j]+=s[t][k]-'0';
				}
				if(d[j]>K){
					flag=true;
				}
			}
			if(flag){
				memset(d,0,sizeof(d));
				flag=false;cnt++;
				rep(j,v.size()-1){
					for(int t=v[j];t<v[j+1];t++){
						d[j]+=s[t][k]-'0';
					}
					if(d[j]>K){
						flag=true;
					}
				}
				if(flag)goto g;
			}
		}
		Min=min(Min,__builtin_popcount(i)+cnt);
		g:;
	}
	cout<<Min<<endl;
}