#include #include #include #include #include using namespace std; int main() { int N; cin >> N; queue> a; a.emplace(); vector b(N, -1); while (!a.empty()) { b[a.front().first] = 1 + a.front().second; bitset<14> c = 1 + a.front().first; int d = a.front().first + c.count(), e = a.front().first - c.count(); if (-1 < e && -1 == b[e]) a.emplace(e, 1 + a.front().second); if (N > d && -1 == b[d]) a.emplace(d, 1 + a.front().second); a.pop(); } cout << b.back(); }