import java.util.Scanner;
class ProblemB {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); int testCases = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < testCases; i++) {
String positions
= scanner.
nextLine().
trim(); char startX = positions.charAt(0);
int startY = positions.charAt(2) - '0';
char endX = positions.charAt(4);
int endY = positions.charAt(6) - '0';
int positionX = startX - 'A';
int positionY = startY - 1;
int targetX = endX - 'A';
int targetY = endY - 1;
if ((positionX + positionY) % 2 != (targetX + targetY) % 2) {
System.
out.
println("Impossible"); continue;
}
if (positionX == targetX && positionY == targetY) {
System.
out.
println("0 " + startX
+ " " + startY
); continue;
}
if (Math.
abs(positionX
- targetX
) == Math.
abs(positionY
- targetY
)) { System.
out.
println("1 " + startX
+ " " + startY
+ " " + endX
+ " " + endY
); continue;
}
int midX = positionX + ((targetY - positionY) / 2);
int midY = positionY + ((targetY - positionY) / 2);
char midCharX = (char) (midX + 'A');
int midCharY = midY + 1;
System.
out.
println("2 " + startX
+ " " + startY
+ " " + midCharX
+ " " + midCharY
+ " " + endX
+ " " + endY
); }
scanner.close();
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKY2xhc3MgUHJvYmxlbUIgewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IHRlc3RDYXNlcyA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgIHNjYW5uZXIubmV4dExpbmUoKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0Q2FzZXM7IGkrKykgewogICAgICAgICAgICBTdHJpbmcgcG9zaXRpb25zID0gc2Nhbm5lci5uZXh0TGluZSgpLnRyaW0oKTsKICAgICAgICAgICAgY2hhciBzdGFydFggPSBwb3NpdGlvbnMuY2hhckF0KDApOwogICAgICAgICAgICBpbnQgc3RhcnRZID0gcG9zaXRpb25zLmNoYXJBdCgyKSAtICcwJzsKICAgICAgICAgICAgY2hhciBlbmRYID0gcG9zaXRpb25zLmNoYXJBdCg0KTsKICAgICAgICAgICAgaW50IGVuZFkgPSBwb3NpdGlvbnMuY2hhckF0KDYpIC0gJzAnOwoKICAgICAgICAgICAgaW50IHBvc2l0aW9uWCA9IHN0YXJ0WCAtICdBJzsKICAgICAgICAgICAgaW50IHBvc2l0aW9uWSA9IHN0YXJ0WSAtIDE7CiAgICAgICAgICAgIGludCB0YXJnZXRYID0gZW5kWCAtICdBJzsKICAgICAgICAgICAgaW50IHRhcmdldFkgPSBlbmRZIC0gMTsKCiAgICAgICAgICAgIGlmICgocG9zaXRpb25YICsgcG9zaXRpb25ZKSAlIDIgIT0gKHRhcmdldFggKyB0YXJnZXRZKSAlIDIpIHsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW1wb3NzaWJsZSIpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChwb3NpdGlvblggPT0gdGFyZ2V0WCAmJiBwb3NpdGlvblkgPT0gdGFyZ2V0WSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIwICIgKyBzdGFydFggKyAiICIgKyBzdGFydFkpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChNYXRoLmFicyhwb3NpdGlvblggLSB0YXJnZXRYKSA9PSBNYXRoLmFicyhwb3NpdGlvblkgLSB0YXJnZXRZKSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIxICIgKyBzdGFydFggKyAiICIgKyBzdGFydFkgKyAiICIgKyBlbmRYICsgIiAiICsgZW5kWSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaW50IG1pZFggPSBwb3NpdGlvblggKyAoKHRhcmdldFkgLSBwb3NpdGlvblkpIC8gMik7CiAgICAgICAgICAgIGludCBtaWRZID0gcG9zaXRpb25ZICsgKCh0YXJnZXRZIC0gcG9zaXRpb25ZKSAvIDIpOwogICAgICAgICAgICBjaGFyIG1pZENoYXJYID0gKGNoYXIpIChtaWRYICsgJ0EnKTsKICAgICAgICAgICAgaW50IG1pZENoYXJZID0gbWlkWSArIDE7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMiAiICsgc3RhcnRYICsgIiAiICsgc3RhcnRZICsgIiAiICsgbWlkQ2hhclggKyAiICIgKyBtaWRDaGFyWSArICIgIiArIGVuZFggKyAiICIgKyBlbmRZKTsKICAgICAgICB9CiAgICAgICAgc2Nhbm5lci5jbG9zZSgpOwogICAgfQp9Cg==