#include #include #include #include #include #include #include #include #define INF 0x7fffffff using namespace std; //const int M=10005; //char tmp[500]; //int fa[M];int get(int a){return fa[a]==a?a:fa[a]=get(fa[a]);} //int gcd(int a,int b){return b==0?a:gcd(b,a%b);} //void exgcd(int a,int b,int &x,int &y){ // if(b==0){ // x=1;y=0;return; // }else{ // exgcd(b,a%b,y,x);y-=a/b*x; // } //} //struct BigInt{ // int num[103],len; // BigInt(){ // memset(num,0,sizeof(num)); // len=0; // } // BigInt operator+(const BigInt&a)const{ // BigInt res;res.len=max(a.len,len); // for(int i=0;i=10000){ // res.num[i]-=10000; // res.num[i+1]++; // } // } // if(res.num[res.len])res.len++; // return res; // } // BigInt operator*(const BigInt&a)const{ // BigInt res;res.len=a.len+len-1; // for(int i=0;i=10000){ // res.num[i+j+1]+=res.num[i+j]/10000; // res.num[i+j]%=10000; // } // } // } // while(res.num[res.len])res.len++; // return res; // } // void Print(){ // printf("%d",num[len-1]); // for(int i=len-2;i>=0;i--){ // printf("%04d",num[i]); // } // puts(""); // } // void Rd(){ // scanf("%s",tmp); // for(int i=strlen(tmp)-1;i>=0;i-=4){ // for(int j=max(i-3,0);j<=i;j++){ // num[len]=(num[len]<<3)+(num[len]<<1)+(tmp[j]^48); // } // len++; // } // } //}; //void rd(int &res){ // res=0;char c; // while(c=getchar(),!isdigit(c)); // do res=(res<<3)+(res<<1)+(c^48); // while(c=getchar(),isdigit(c)); //} int n,s,t; int main(){ while(scanf("%d%d%d",&n,&s,&t)!=-1){ if(n==1)puts("0"); else if(s==t)puts("-1"); else if(t==1&&s==n||t==n&&s==1)puts("0"); else if(s==1||s==n)puts("1"); else if(abs(s-t)==1)puts("1"); else puts("2"); } return 0; }