#include<bits/stdc++.h>

#define REP(i, n) for(int i =0; i < n; ++i)

using namespace std;

typedef long long ll;

unordered_map<ll, int> dist;
queue<ll> q;
int b;
ll st, en;

int main(){
	string s;
	cin >> s;
	b = s.size();
	en = (1ll<<b)-1;
	st = 0;
	REP(i, b){
		st*=2;
		if(s[i] == '1')++st;
	}
	//cerr << st << " " << en << endl;

	if(st == en){
		cout << 0 << endl;
		return 0;
	}
	if(s[0] != '1'){
		cout << -1 << endl;
		return 0;
	}

	int result = 6;
	bool done = false;	

	dist[st] = 0;
	q.push(st);
	while(!q.empty()){
		ll x = q.front();
		q.pop();
		int d = dist[x];
		for(int k = 1; k <= b; ++k){
			ll y = x|(x>>k);
			if(dist.find(y) != dist.end()) continue;
			if(y == en){
				done = true;
				result = d+1;
				break;
			}
			if(d < 4){
				dist[y] = d+1;
				q.push(y);
			}
		}
		if(done) break;
	}
	


	cout << result << endl;

	return 0;
}
