#include using namespace std; typedef long long int ll; typedef double ld; typedef pair ii; typedef vector vi; typedef vector vii; #define PB push_back #define ff first #define ss second #define DEB cerr<<"DEB: " #define FOR(prom,a,b) for(ll prom = (a); prom < (ll)(b); ++prom) #define ROF(prom,a,b) for(ll prom = (a); prom >= b; --prom) #define F(a) FOR(i,0,a) #define FF(a) FOR(j,0,a) #define EPS (1e-10) #define EQ(a,b) (fabs(a-b) <= fabs(b-a) * EPS) #define LINF (1LL<<62LL) unordered_map DP; ll gmini = 99999; ll success; string str; ll solve(ll curr, ll s) { if(gmini < s) return 99999; if(curr == success) return s; if(DP.find(curr) != DP.end()) return DP[curr]; ll mini = 99999; F(str.size()-1) mini = min(mini, solve(curr | (curr >> (i+1)), s+1)); DP[curr] = mini; gmini = min(mini, gmini); return mini; } int main() { cin >> str; ll cur = 0; if(str[0] == '0') { cout << -1 << endl; return 0; } for(char a : str) { cur = cur << 1; success = success << 1; if(a=='1') cur += 1; success += 1; } cout << solve(cur, 0) << endl; return 0; }