#include <bits/stdc++.h>
using namespace std;
map<signed,bool> vis;
signed n;
struct pos
{
signed x;
signed cnt;
};
void bfs()
{
queue<pos> q;
q.push(pos{1,0});
while(!q.empty())
{
signed x=q.front().x;
signed cnt=q.front().cnt;
q.pop();
if(x<1||x>n) continue;
if(vis[x]) continue;
vis[x]=true;
if(x==n)
{
cout<<cnt;
break;
}
q.push(pos{x+1,cnt+1});
q.push(pos{x-1,cnt+1});
q.push(pos{x*2,cnt+1});
}
}
signed main()
{
scanf("%d",&n);
bfs();
return 0;
}