function main(input) { const n = parseInt(input[0]); const minStep = []; const q = [{floor:1, step:1}]; while(q.length > 0) { const {floor, step} = q.shift(); if(floor < 1 || floor > n) continue; if(minStep[floor] <= step) continue; minStep[floor] = step; const oneBit = countOneBit(floor); q.push({floor:(floor+oneBit), step:(step+1)}); q.push({floor:(floor-oneBit), step:(step+1)}); } if(minStep[n]) { console.log(minStep[n]); } else { console.log(-1); } } function countOneBit(i) { let count = 0; while(i > 0) { if((i & 1) === 1) count++; i >>= 1; } return count; } main(require("fs").readFileSync("/dev/stdin", "utf8").split("\n"));