#include using namespace std; void p(long long l){ string s = ""; while(l > 0){ s = ((char)(l % 2 + '0')) + s; l /= 2; } cout << s << endl; } int main(){ ios_base::sync_with_stdio(false); string s; cin >> s; if(s[0] == '0'){ cout << -1 << endl; return 0; } long long S1 = 0; for(int i = 0; i < s.length(); i++){ S1 *= 2; S1 += s[i] - '0'; } long long A; int min = 100000; long long G = ((long long)1 << s.length()) - 1; if(G == S1){ min = 0; } //cout << S1 << " " << G << endl; for(int i1 = 1; i1 <= 39 && min > 1; i1++){ A = S1; A = A | (A >> i1); if(A == G) min = 1; long long S2 = A; //p(A); for(int i2 = 1; i2 <= 39 && min > 2; i2++){ A = S2; A = A | (A >> i2); if(A == G) min = 2; long long S3 = A; //cout << '\t'; //p(A); for(int i3 = 1; i3 <= 39 && min > 3; i3++){ A = S3; A = A | (A >> i3); if(A == G) min = 3; long long S4 = A; //cout << '\t\t'; //p(A); for(int i4 = 1; i4 <= 39 && min > 4; i4++){ A = S4; A = A | (A >> i4); if(A == G) min = 4; long long S5 = A; for(int i5 = 1; i5 <= 39 && min > 5; i5++){ A = S5; A = A | (A >> i5); if(A == G) min = 5; /*long long S6 = A; for(int i6 = 1; i6 <= 39 && min > 6; i6++){ A = S6; A = A | (A >> i6); if(A == G) min = 6; }*/ } } } } } if(min == 100000) cout << 6 << endl; else cout << min << endl; return 0; } // 1000000000000000000000000000000000000000