$n = intval(trim(fgets(STDIN))); $grid= 1; $counter= 1; if ($n == 1) { echo $counter; die; } while ($grid != 0) { $counter++; $steps = mb_substr_count(decbin($grid), 1); $grid += $steps; if ($grid == $n) { echo $counter; break; } elseif ($grid > $n) { $grid -= ($steps * 2); } }