#include<bits/stdc++.h>
using namespace std;
struct node
{
int data,cost;
};
queue<node> q;
int n,x,s;
int cnt;
bool v[1000005];
int main()
{
cin>>n;
q.push((node){1,0});
while(1)
{
x=q.front().data,s=q.front().cost;
if(v[x]||x<1||x>n)
{
q.pop();
continue;
}
v[x]=1;
if(x==n)
{
cout<<s;
return 0;
}
q.push((node){x+1,s+1}),q.push((node){x-1,s+1}),q.push((node){x*2,s+1});
}
return 0;
}