记录下动态规划的起步位置
#include<bits/stdc++.h>
#define N 1000010
using namespace std;
int dp[N];
int main(){
int n;
cin>>n;
memset(dp,0x3f,sizeof dp);
dp[1]=0;
for(int i=1;i<=n;i++){
if(i>1&&i%2==0)
dp[i]=min(dp[i/2]+1,dp[i-1]+1);
else
dp[i]=min(dp[i],dp[i-1]+1);
}
cout<<dp[n];
}