#include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; using namespace std; #define mod 1000000007 #define INF 1000000000 #define LLINF 2000000000000000000LL #define PI 3.1415926536 #define SIZE 1000 bool visit[100][100][12]; int mo[] = {0,1,0,-1,0}; int h,w,m[100][100]; queue,int> > q1; bool isKadomatsuSequence(int a,int b,int c){ if(a==-1) return true; if(a==b || b==c || c==a) return false; if(b==min(a,min(b,c))) return true; if(b==max(a,max(b,c))) return true; return false; } int main(){ scanf("%d%d",&w,&h); for(int i=0;i0;i++){ queue,int> > q2; while(q1.size()){ pair,int> p = q1.front(); q1.pop(); int x = p.first.second; int y = p.first.first; if(x==w-1 && y==h-1){ printf("%d\n",i); return 0; } if(visit[y][x][p.second]) continue; visit[y][x][p.second] = true; for(int i=0;i<4;i++){ if(isKadomatsuSequence(p.second,m[y][x],m[y+mo[i]][x+mo[i+1]])){ if(0<=x+mo[i+1] && x+mo[i+1]