
data = [int(j) for j in input().strip()]
b = len(data)

from collections import deque

end = [1]*b

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):
    visited = set()
    visited.add(tuple(data))
    todo = deque()
    todo.append([data,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:
    print(find(data))
