
data = [int(j) for j in input().strip()]
import time
t = time.time()

from collections import deque


def nextt(phase, k):
    new = [e for e in phase]
    for i in range(len(new)-k):
        if phase[i] == 1:
            new[i+k] = 1
    return tuple(new)

def find(data):
    b = len(data)
    visited = set()
    visited.add(tuple(data))
    todo = deque()
    todo.append([data,0])
    if sum(data) == len(data):
        return 0
    while todo:
        dat, step = todo.popleft()
        for k in range(1,b):
            ne = nextt(dat, k)
            if sum(ne) == b:
                return step+1
            if ne not in visited:
                todo.append([ne, step+1])
                visited.add(ne)

if data[0] == 0:
    print(-1)
else:
    results = [0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
    if sum(data) == 1:
        print(results[len(data)])
    else:
        print(find(data))
    '''res = [1]
    for j in range(42):
        dd = '1' + '0'*j
        dd = [int(j) for j in dd]
        res.append(find(dd))
        print(res)
    print(res)
    if sum(data) == 1:
        print(find(data))
    '''
    #for j in range(1,42):
    #    niz = [1] + [0]*j
    #    print(niz)
    #    resu = find(tuple(niz))
    #    print(resu, results[j+1])

#print(time.time( ) - t)
