#include using namespace std; #define TRACE(x) cerr << #x << ' ' << x << endl #define FOR(i, a, b) for (int i = (a); i < int(b); i++) #define REP(i, n) FOR(i, 0, n) #define _ << ' ' << typedef long long llint; typedef long long ll; typedef pair pii; #define fi first #define sec second #define pb push_back string s; void fail() { cout << -1; exit(0); } int n; int sol = 10; void check(vector tmp) { string s1 = s; for(auto k: tmp) { string ns = s1; REP(i, ns.size()) { if(ns[i] == '0' && i - k >= 0 && s1[i - k] == '1') ns[i] = '1'; } s1 = ns; } REP(i, s1.size()) if(s1[i] == '0') return; sol = tmp.size(); } void rek(int dub, vector tmp, int ls) { if(dub >= sol) return; check(tmp); FOR(i, ls, n + 1) { vector ntmp; ntmp = tmp; ntmp.pb(i); rek(dub + 1, ntmp, 2 * i); } } int main() { cin >> s; n = s.size(); vector v; rek(0, v, 1); if (sol == 10) sol = -1; cout << sol << endl; return 0; }