#include<bits/stdc++.h>
using namespace std;
long long n;
bool vis[1000005];
struct cat{long long idx,stp;}f;
queue<cat>q;
int main(){
cin>>n;
vis[1]=1;
f.idx=1;
f.stp=0;
q.push(f);
while(!q.empty()){
cat now=q.front();
q.pop();
if(now.idx==n){
cout<<now.stp;
return 0;
}
for(int i=0;i<3;i++){
if(i==0){
if(((now.idx-1)<1)||vis[now.idx-1])continue;
vis[now.idx-1]=1;
now.idx--;
now.stp++;
q.push(now);
}
if(i==1){
if(((now.idx+1)>n)||vis[now.idx+1])continue;
vis[now.idx+1]=1;
now.idx++;
now.stp++;
q.push(now);
}
if(i==2){
if(((2*now.idx)>n)||vis[now.idx*2])continue;
vis[now.idx*2]=1;
now.idx*=2;
now.stp++;
q.push(now);
}
}
}
return 0;
}