# frozen_string_literal: true # Current positions. class Array def solve_rec(rst) # rubocop:todo Metrics/AbcSize if empty? || rst > N -1 else # Avoid block chain is slow. m = map do |x| c = x.digits(2).sum [x + c, x - c] end.flatten.filter { _1 > 1 && _1 <= N }.uniq m.include?(N) ? rst + 1 : m.solve_rec(rst + 1) end end end N = gets.to_i RESULT = [1].solve_rec(1) puts RESULT