for (int x = 0; x < N; ++ x) for (int y = 0; y < N; ++ y) for (int i = 0; i < 4; ++ i) { string t = qt; int a = x + dx[i], b = y + dy[i];
if (a >= 0 && a < N && b >= 0 && b < N) { int dist = map[t]; swap(t[x * N + y], t[a * N + b]); if (!map.count(t)) { map[t] = dist + 1; if (t == target) return map[t]; q.push(t); } } } }
return0x3f3f3f3f; }
intmain() { ios::sync_with_stdio(false);
for (int i = 0; i < N; ++ i) for (int j = 0; j < N; ++ j) { char t; cin >> t; start += t; }
for (int i = 0; i < N; ++ i) for (int j = 0; j < N; ++ j) { char t; cin >> t; target += t; }