#include #include #define lli long long int using namespace std; lli resN, maxLevel; int len; long long int shif(long long int num, long long int k) { long long int s = num >> k; return s | num; } void rec(lli level, lli num) { if (level > maxLevel) { return; } if (num == resN) { if (level < maxLevel) { maxLevel = level; } return; } for (int i = 1; i < len; ++i) { //cout << i << " " << num << endl; rec(level+1, shif(num, i)); } } int main() { string k; cin >> k; if (k[0] == '0') { cout << "-1" << endl; return 0; } lli num = 0; len = k.length(); for (int i = 0; i < len; ++i) { if (k[i] == '1') { num += pow(2, len - 1 - i); } } //cout << num << endl; maxLevel = 100000; resN = pow(2, len) - 1; if ( num == resN) { cout << 0 << endl; return 0; } rec(1, num); cout << maxLevel - 1<< endl; return 0; }