package main

import (
	"fmt"
)

func countBit(i int) int {
	c := 0

	for j := 1; j <= i; j <<= 1 {
		if j&(i) == j {
			c++
		}
	}

	return c
}

func main() {
	var n int

	fmt.Scanf("%d", &n)

	q := make(chan int, n+1)

	q <- 1

	vs := make(map[int]int, n)
	vs[1] = 1

	for i := range q {
		b := countBit(i)

		if i+b <= n && vs[i+b] == 0 {
			vs[i+b] = vs[i] + 1
			q <- i + b
		}

		if i-b > 0 && vs[i-b] == 0 {
			vs[i-b] = vs[i] + 1
			q <- i - b
		}

		if len(q) == 0 {
			close(q)
		}
	}

	if vs[n] == 0 {
		fmt.Println("-1")
		return
	}

	fmt.Println(vs[n])
}