#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;
}