| 记录编号 | 
        571435 | 
        评测结果 | 
        AAAAAAAA | 
    
    
        | 题目名称 | 
        865.魔板 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         lihaoze | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.016 s  | 
    
    
        | 提交时间 | 
        2022-05-23 20:19:29 | 
        内存使用 | 
        1.83 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include <bits/stdc++.h>
using i32 = unsigned int;
using i64 = long long;
using PIS = std::pair<i32, std::string>;
const i32 bg = 0x12348765;
i32 A(i32 x) { return x << 16 | x >> 16; }
i32 B(i32 x) { return (x & 0xFFF0FFF0) >> 4 | (x & 0x000F000F) << 12; }
i32 C(i32 x) {
	i32 ret = x & 0xF00FF00F;
	ret |= (x & 0x0F000000) >>  4 | (x & 0x000000F0) <<  4;
	ret |= (x & 0x00F00000) >> 16 | (x & 0x00000F00) << 16;
	return ret;
}
i32 n;
std::unordered_map<i32, bool> st;
char op[] = "0ABC";
void bfs() {
	std::queue<PIS> q;
	q.push(std::make_pair(bg, ""));
	while (q.size()) {
		auto t = q.front(); q.pop();
		auto x = t.first;
		auto y = t.second;
		if (x == n) {
			std::cout << y.size() << '\n' << y << '\n';
			return;
		}
		i32 a = A(x); if (!st[a]) q.push(std::make_pair(a, y + op[1])), st[a] = true;
		i32 b = B(x); if (!st[b]) q.push(std::make_pair(b, y + op[2])), st[b] = true;
		i32 c = C(x); if (!st[c]) q.push(std::make_pair(c, y + op[3])), st[c] = true;
	}
}
int main() {
	freopen("msquare.in", "r", stdin); 
	freopen("msquare.out", "w", stdout);
	i32 a[10];
	for (int i = 1; i <= 8; ++ i) std::cin >> a[i];
	for (int i = 1; i <= 4; ++ i) n = n << 4 | a[i];
	for (int i = 8; i >= 5; -- i) n = n << 4 | a[i];
	bfs();
	return 0;
}