#include<bits/stdc++.h>#define INF 0x3f3f3f3fusingnamespace std;constint N =35;int m, n;int book[N][N];int mp[N][N];int dir[2][2]={{1,0},{0,1}};int minn;voidDFS(int x,int y,int flag,int id,int cnt){if(id > minn)//最优剪return;if(cnt > n)//可行剪return;if(x == m && y == m){if(cnt == n){minn =min(minn, id);}return;}for(int i =0; i <2; i++){int xx = x + dir[i][0];int yy = y + dir[i][1];if(xx >=1&& xx <= m && yy >=1&& yy <= m &&!book[xx][yy]){book[xx][yy]=1;if(cnt ==1){DFS(xx, yy, i, id, cnt + mp[xx][yy]);}else{if(i != flag)DFS(xx, yy, i, id +1, cnt + mp[xx][yy]);elseDFS(xx, yy, i, id, cnt + mp[xx][yy]);}book[xx][yy]=0;}}}voidinit(){for(int i =1; i <= m; i++){for(int j =1; j <= m; j++)mp[i][j]= i;}}intmain(){while(cin >> m >> n){memset(book,0,sizeof(book));init();book[1][1]=1;minn = INF;DFS(1,1,0,0,1);cout << minn << endl;}return0;}