简单一维BFS
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define ll long long
#define ul unsigned long long
#define sd(n) scanf("%d",&(n))
#define pd(n) printf("%d\n",(n))
#define INF 1000000000
int N,K;
int q[100005];
int d[100005];
int dx[3]={1,-1,0};
int bfs()
{
int head=0;
int tail=1;
q[head]=N;
int now;
for(int i=0;i<=100000;i++)
d[i]=INF;
d[N]=0;
while(head<tail)
{
now=q[head++];
for(int i=0;i<3;i++)
{
int nx=now+(dx[i]?dx[i]:now);
if(nx>=0&&nx<=100000&&d[nx]==INF)
{
q[tail++]=nx;
d[nx]=d[now]+1;
}
}
}
return d[K];
}
int main()
{
scanf("%d%d",&N,&K);
printf("%d\n",bfs());
}