$N=<>; $d[@q=1]=2; while($i=pop@q){ $t=0; $t+=$i>>$_&1for 0..13; if($i-$t>=1){ $d[$i-$t]||=$d[$i]+!!(push@q,$i-$t) } if($i+$t<=$N){ $d[$i+$t]||=$d[$i]+!!(push@q,$i+$t) } } print$d[$N]-1