import java.io.OutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.util.Arrays; import java.io.BufferedWriter; import java.util.InputMismatchException; import java.io.IOException; import java.io.Writer; import java.io.OutputStreamWriter; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top */ public class flashingflourescents_lewin { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; InputReader in = new InputReader(inputStream); OutputWriter out = new OutputWriter(outputStream); FlashingFlourescents solver = new FlashingFlourescents(); solver.solve(1, in, out); out.close(); } static class FlashingFlourescents { public void solve(int testNumber, InputReader in, OutputWriter out) { String s = new StringBuilder(in.next()).reverse().toString(); int n = s.length(); boolean[] ok = new boolean[1 << n]; ok[Integer.parseInt(s, 2)] = true; int ans = 0; while (!ok[(1 << n) - 1]) { boolean[] nok = Arrays.copyOf(ok, ok.length); for (int mask = 0; mask < 1 << n; mask++) { if (ok[mask]) for (int off = 0; off < n; off++) { nok[mask ^ ((1 << (Math.min(n, off + ans + 1))) - (1 << off))] = true; } } ok = nok; ans++; } out.println(ans); } } static class InputReader { private InputStream stream; private byte[] buf = new byte[1 << 16]; private int curChar; private int numChars; public InputReader(InputStream stream) { this.stream = stream; } public int read() { if (this.numChars == -1) { throw new InputMismatchException(); } else { if (this.curChar >= this.numChars) { this.curChar = 0; try { this.numChars = this.stream.read(this.buf); } catch (IOException var2) { throw new InputMismatchException(); } if (this.numChars <= 0) { return -1; } } return this.buf[this.curChar++]; } } public String next() { int c; while (isSpaceChar(c = this.read())) { ; } StringBuilder result = new StringBuilder(); result.appendCodePoint(c); while (!isSpaceChar(c = this.read())) { result.appendCodePoint(c); } return result.toString(); } public static boolean isSpaceChar(int c) { return c == 32 || c == 10 || c == 13 || c == 9 || c == -1; } } static class OutputWriter { private final PrintWriter writer; public OutputWriter(OutputStream outputStream) { writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))); } public OutputWriter(Writer writer) { this.writer = new PrintWriter(writer); } public void close() { writer.close(); } public void println(int i) { writer.println(i); } } }