#include using namespace std; #define int long long map m; int n; int32_t main() { ios_base::sync_with_stdio( 0 ); cin.tie( 0 ); string s; cin >> s; if( s[0] =='0' ) { cout << -1; return 0; } int pocz = 0; int kon = 0; for( char c : s ) { pocz = pocz*2+c-'0'; n++; kon = kon*2+1; } priority_queue, vector >, greater > > kol; kol.push( {0, pocz} ); m[pocz] = 0; int gdzie, d; while( !kol.empty() ) { gdzie = kol.top().second; d = kol.top().first; kol.pop(); if( m[gdzie] != d ) continue; if( kon == gdzie ) { cout << d; return 0; } for( int pom, i=1; i<=n; i++ ) { pom = gdzie>>i; pom |= gdzie; if( m.find( pom ) == m.end() || m[pom] > d+1 ) { m[pom] = d+1; kol.push( {d+1, pom} ); } } } return 0; }