package se.code.d4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
/**
* @author itsmeyjc
* @since 2019. 3. 12.
* @see https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd&categoryId=AWMeRLz6kC0DFAXd&categoryType=CODE&&&
* @mem 17,940 kb
* @time 109 ms
* 2진수의 자리를 하나씩 바꿔가며 일단 10진수로 변경해본다.
* 3진수도 역시 같이 처리하면서 2진수의 변경 값과 3진수의 변경 값이 같은 경우가 발견되면 그게 정답이다.
* 3^39는 Integer보다 크고 Long 보다 작기 때문에 Long을 이용해서 처리한다.
*/
public class SWEA_D4_4366_정식이의은행업무 {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br = new BufferedReader(new StringReader(src));
int tc = Integer.parseInt(br.readLine());
for (int t = 1; t <= tc; t++) {
long answer = 0;
//////////////////////////////////////// TC 처리
String wrong2 = br.readLine();
String wrong3 = br.readLine();
char[] char2 = wrong2.toCharArray();
char[] char3 = wrong3.toCharArray();
// 가능한 후보군 목록
List<Long> candidates = new ArrayList<>();
// 2진수의 한 자리씩 바꿔가며 10진수로 변경
for (int i = 0; i < wrong2.length(); i++) {
// 어떤 자릿수를 바꿔본다. 잘못 기억하고 있으니까...
char2[i] = char2[i] == '0' ? '1' : '0';
candidates.add(toDigit10(char2, 2));
// 다시 원복
char2[i] = char2[i] == '0' ? '1' : '0';
}
outer: for (int j = 0; j < char3.length; j++) {
for (char k = '0'; k < '3'; k++) {
char old = char3[j];
if (char3[j] != k) {
char3[j] = k;// 한번 바꿔보고..
// 답을 찾았다면 그만~
long digit10 = toDigit10(char3, 3);
if (candidates.contains(digit10)) {
answer = digit10;
break outer;
}
char3[j] = old;// 원복
}
}
}
//////////////////////////////////////////////////
sb.append("#").append(t).append(" ").append(answer).append("\n");
}
System.out.println(sb);
}
// 자릿수가 3^39까지이므로 Long의 최대 범위를 넘지 않기 때문에 api를 사용해도 무방하다.
// return Long.parseLong(String.valueOf(char2), 2);
static long toDigit10(char[] chars, int digits) {
long num = 0;
for (int i = 0, j = chars.length - 1; i < chars.length; i++, j--) {
num += (chars[i] - '0') * (Math.pow(digits, j));
}
return num;
}
// END:
static String src = "1\n" +
"1010\n" +
"212";
}