#include #include #include using namespace std; using ll = unsigned long long; int N; int er = 10000000; int xe; void megold(int x, int min, int o, int l) { if(l >= er || o >= N) return; if(x == xe) { er = l; return; } for(int i = min; i < N; i++) { megold(x | (x >> i), i, o + i, l + 1); } } int main() { string s; cin >> s; bitset<40> b(s); ll x = b.to_ullong(); N = s.size(); xe = (1ull << N) - 1; if((x & (1ull << (N - 1))) == 0) { cout << "-1\n"; return 0; } megold(x, 1, 0, 0); cout << er << "\n"; }