数字谜题I
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小杨数学学得非常好。这天,为了考验小杨,他的集训队的队员给他出了一题:给出一个整数 N,需要将 N 变为一个可以被表示为2x+2y 的整数 M,其中 x 和 y 都是非负整数且 x≠ y。他可以进行两种操作: 
1.令 N 加 1。
2.令 N 减 1。 
然而,小杨忙着复习考试。你能帮他求出最少需要多少次操作才能将 N 变成满足条件的 M 吗? 

输入描述:

输入有若干组数据。每组数据仅有一行,包含一个整数 N。
输入数据的组数不超过105
1 ≤ N ≤ 109

输出描述:

对于每组数据,输出一行,包含一个整数,代表最少所需的操作数。
示例1

输入

复制
10
22
4

输出

复制
0
2
1

说明

第一组数据:N = 10 本身就可以表示为 2x + 2y 的形式,其中 x = 3, y = 1。 
第二组数据:N = 22 可以用 2 次操作变为 M = 20= 22+ 24,也可以变成 M = 24 = 23+ 24。 
第三组数据:N = 4 可以用 1 次操作变为 M = 3 = 20 + 21 或者 M = 5 = 20 + 22