object Main {

  // 隣り合うタイルの色を異なる色にする
  // 以下の４通りにする タイルの枚数は10^5,
  // S^2回で10^10なので不可,
  // SlogSなら10^6なので間に合う
  // 0101...01|0
  // 1010...10|1
  // 一回舐めて、最初が黒のパターンと最初が白のパターンで何回変更するかを調べる
  // O(2n)

  val Black = '0'
  val White = '1'

  def main(args: Array[String]): Unit = {
    import scala.io.StdIn._
    val S: List[Char] = readLine().toList

    // 最小を調べる
    def solve(): Int = {
      def change(color: Char): Char =
        if (color == Black) White else Black

      // 前が0なら今回は1にして,前が1なら今回は0にする
      @scala.annotation.tailrec
      def count(lst: List[Char], before: Char, acm: Int): Int =
        if (lst.isEmpty) acm
        else if (before == lst.head) count(lst.tail, change(lst.head), acm + 1)
        else count(lst.tail, lst.head, acm)

      Integer.min(count(S.tail, S.head, 0), count(S.tail, change(S.head), 1))
    }

    println(solve())
  }

}