function main(input) { const n = parseInt(input[0]); const minStep = []; walk(1, n, minStep, 1); if(minStep[n]) { console.log(minStep[n]); } else { console.log(-1); } } function walk(now, n, minStep, step) { if(now < 1 || now > n) return; if(!minStep[now]) minStep[now] = step; if(minStep[now] < step) return; minStep[now] = step; const num = countOneBit(now); walk(now+num, n, minStep, step+1); walk(now-num, n, minStep, step+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"));