#include #include //1000000000000000000000000000000000000000 using namespace std; int rek(long long x, int a, int moves, long long result, int length){ if(x == result){ return moves; } if(moves > 8) return 100; int firstZero = 0; for(int i =0; i < length; i++){ int digit = (x >> i) % 2; if(digit == 0) firstZero = length - i; } int min = 100; for(int i = a + 1; i < firstZero + 2; i++){ long long mask = x >> i; int res = rek(x | mask, i, moves+1, result, length); if(res < min) min = res; } return min; } int main() { cin.sync_with_stdio(false); cin.tie(nullptr); string stevilo = ""; cin >> stevilo; if(stevilo[0] == '0'){ cout << "-1" << "\n"; return 0; } int digits = stevilo.size(); long long number = 0; for (int i = 0; i < stevilo.size(); i++){ char c = stevilo[i]; if(c == '1'){ number += ((long long)1) << (digits - i - 1); } } long long result = (((long long)1) << digits) - 1; //cout << number << "\n"; //cout << result << "\n"; cout << (rek(number, 0, 0, result, digits)) << "\n"; return 0; }