0) { $m = array_shift($queue); $bc = substr_count(decbin($m), 1); $move = $m - $bc; if ($move > 0 && ($a[$move] == -1 || $a[$move] > $a[$m] + 1)) { $a[$move] = $a[$m] + 1; $queue[] = $move; } $move = $m + $bc; if ($move <= $n && ($a[$move] == -1 || $a[$move] > $a[$m] + 1)) { $a[$move] = $a[$m] + 1; $queue[] = $move; } } print $a[$n];