#include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define srep(i, s, n) for (int i=(s); i < (int)(n); i++) #define all(v) v.begin(), v.end() #define fore(i,x) for(auto i:x) #define pb push_back using vi=vector; using vvi=vector; using vb=vector; using vvb=vector; using vs=vector; using vll=vector; using vvll=vector; using vc=vector; using vvc=vector; using ll=long long; void Yes(bool ok){ cout << (ok ? "Yes" : "No") << "\n";} int main(){ int N; cin >> N; vi move(N+1); srep(i,1,N+1){ int cnt=0; rep(j,15){ if(i & (1< que; que.push(1); dist.at(1)=1; while(!que.empty()){ int cur=que.front(); que.pop(); if(cur+move.at(cur)<=N && dist.at(cur+move.at(cur))==-1){ dist.at(cur+move.at(cur))=dist.at(cur)+1; que.push(cur+move.at(cur)); } if(cur-move.at(cur)>=1 && dist.at(cur-move.at(cur))==-1){ dist.at(cur-move.at(cur))=dist.at(cur)+1; que.push(cur-move.at(cur)); } } cout << dist.at(N) << "\n"; }