/* ID: Supo PROG: msquare LANG: C++ */ //DEDICATED TO EMMA WATSON, THE BRITISH *SUNSHINE* #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define eps 10e-10 #define INF 10e15 #define PI 3.141592653589793238462 #define EU 2.71828182845904523536 #define sz(a) (int)a.size() #define pb(a) push_back(a) #define mset(a,hodnota) memset(a,hodnota,sizeof(a)) #define wh(a) a.begin(),a.end() #define REP(i,n) for(__typeof(n) i=0;i<(n);++i) #define REPS(i,n) for(int(i)=0;i=(b);--i) #define FORE(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();++it) #define pii pair #define mp(a,b) make_pair(a,b) #define fi first #define se second typedef long long ll; using namespace std; ifstream fin ("msquare.in"); ofstream fout ("msquare.out"); #define bigPrime 1000003 int table[bigPrime]; int intToMine(int a) { int ans=0; REP(i,8) { ans<<=3; ans+=(a%10)-1; a/=10; } return ans; } void outpt(string prefix,int a) { cout<>=3; } cout<>(kde[ktora][i]*3))&7); return ans; } map seen; bool visited(int x) { return seen.find(x)!=seen.end(); } void mark(int x,int c) { seen[x]=c; } string getOp(int prev,int next) { REP(i,3) if (next==(i==0?op(i,prev):op(0,op(i,prev)))) return string(1,'A'+i); return "X"; } int main( ) { int target=0,start=0; char c; REP(i,8) fin>>c,target<<=3,target+=c-'1',start<<=3,start+=i; target=op(0,target); start=op(0,start); outpt("tar : ",target); outpt("tar : ",start); outpt("testik1 : ",op(0,target)); outpt("testik2 : ",op(0,op(1,target))); outpt("testik3 : ",op(0,op(2,target))); deque Q; Q.pb(start); seen[start]=start; while(sz(Q)) { int cur=Q.front(); if (cur==target) break; Q.pop_front(); REP(i,3) { int novy=i==0?op(i,cur):op(0,op(i,cur)); if (!visited(novy)) { mark(novy,cur); Q.pb(novy); } } } int cur=target; string s=""; do { s=getOp(seen[cur],cur) + s; cur=seen[cur]; }while(cur!=start); if (s=="X") fout<<0<