#include <stdio.h>
#include <string.h>
int main() {
int T; // 题目数量
scanf("%d", &T);
getchar(); // 吃掉换行符
for (int i = 0; i < T; i++) {
char A[610], B[610], C[610], D[610];
int lenA, lenB, lenC, lenD;
// 读取四个选项
fgets(A, 610, stdin);
A[strcspn(A, "\n")] = '\0';
lenA = strlen(A);
fgets(B, 610, stdin);
B[strcspn(B, "\n")] = '\0';
lenB = strlen(B);
fgets(C, 610, stdin);
C[strcspn(C, "\n")] = '\0';
lenC = strlen(C);
fgets(D, 610, stdin);
D[strcspn(D, "\n")] = '\0';
lenD = strlen(D);
// 计算四个选项的长度
int lengths[4] = {lenA, lenB, lenC, lenD};
// 找最短和最长的选项
int min_len = lenA, max_len = lenA;
int min_count = 0, max_count = 0;
int min_index = 0, max_index = 0;
// 找出最短的长度和个数
for (int j = 0; j < 4; j++) {
if (lengths[j] < min_len) {
min_len = lengths[j];
}
}
for (int j = 0; j < 4; j++) {
if (lengths[j] == min_len) {
min_count++;
min_index = j; // 记录最后一个最短的索引
}
}
// 找出最长的长度和个数
for (int j = 0; j < 4; j++) {
if (lengths[j] > max_len) {
max_len = lengths[j];
}
}
for (int j = 0; j < 4; j++) {
if (lengths[j] == max_len) {
max_count++;
max_index = j; // 记录最后一个最长的索引
}
}
// 判断规则
if (min_count == 1 && max_count != 1) {
// 三长一短:只有一个最短的,且没有只有一个最长的
printf("%c\n", 'A' + min_index);
} else if (max_count == 1 && min_count != 1) {
// 三短一长:只有一个最长的,且没有只有一个最短的
printf("%c\n", 'A' + max_index);
} else {
// 参差不齐:其他情况都选C
printf("C\n");
}
}
return 0;
}