def divisors(n)
  1.upto(Math.sqrt(n).to_i).select{|i| n.modulo(i).zero?}.map{|i| [i, n.div(i)].uniq}.flatten
end

def eq(n)
  divisors(n.size).map{|w| w.step(n.size, w).map{|i| n[(i-w)...i].to_i}.minmax.inject(:-).abs}.min
end

def dfs(n, i, min, max)
  return max - min unless i < n.size

  j = (n[i] == ?1) ? i+1 : i
  return INF unless j < n.size

  t = n[i..j].to_i
  dfs(n, j+1, [min, t].min, [max, t].max)
end

def neq(n)
  dfs(n, 0, INF, 0)
end

n = gets.chomp
p [eq(n), neq(n)].min