import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;

public class Main {

    static Map<State, Queue<String>> Qmap = new HashMap<>();
    static {
        Qmap.put(State.A, new ArrayDeque<>());
        Qmap.put(State.B, new ArrayDeque<>());
        Qmap.put(State.C, new ArrayDeque<>());
    }
    static State CURRENT_STATE = State.A;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    }

    /**
     * 操作するキューオブジェクトを引数のオブジェクト名の対象に変更する
     */
    private static void changeQueueState(String elm) {
        CURRENT_STATE = State.getEnum(elm);
    }

    /**
     * 現在の参照キューが空かどうかを判定する
     */
    private static boolean isEnd() {
        return Qmap.get(CURRENT_STATE).isEmpty();
    }

    /**
     * 現在の参照キューから値をpollする
     */
    private static String poll() {
        return Qmap.get(CURRENT_STATE).poll();
    }

    /**
     * 入力文字を属性に応じたキューに追加する。
     */
    private static void addToQueue(State state, String s) {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    }

    /**
     * どのキューを参照しているかを示す為の文字列属性
     */
    enum State {
        A, B, C;
        public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        }
    }
} import java.util.ArrayDeque; ArrayDeque java.util import java.util.HashMap; HashMap java.util import java.util.Map; Map java.util import java.util.Queue; Queue java.util import java.util.Scanner; Scanner java.util public class Main {

    static Map<State, Queue<String>> Qmap = new HashMap<>();
    static {
        Qmap.put(State.A, new ArrayDeque<>());
        Qmap.put(State.B, new ArrayDeque<>());
        Qmap.put(State.C, new ArrayDeque<>());
    }
    static State CURRENT_STATE = State.A;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    }

    /**
     * 操作するキューオブジェクトを引数のオブジェクト名の対象に変更する
     */
    private static void changeQueueState(String elm) {
        CURRENT_STATE = State.getEnum(elm);
    }

    /**
     * 現在の参照キューが空かどうかを判定する
     */
    private static boolean isEnd() {
        return Qmap.get(CURRENT_STATE).isEmpty();
    }

    /**
     * 現在の参照キューから値をpollする
     */
    private static String poll() {
        return Qmap.get(CURRENT_STATE).poll();
    }

    /**
     * 入力文字を属性に応じたキューに追加する。
     */
    private static void addToQueue(State state, String s) {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    }

    /**
     * どのキューを参照しているかを示す為の文字列属性
     */
    enum State {
        A, B, C;
        public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        }
    }
} Main static Map<State, Queue<String>> Qmap = new HashMap<>(); Qmap new HashMap<>() static State CURRENT_STATE = State.A; CURRENT_STATE State.A State State.A public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    } main {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    } Scanner scan = new Scanner(System.in); scan new Scanner(System.in) String sa = scan.next(); sa scan.next() scan.next scan String sb = scan.next(); sb scan.next() scan.next scan String sc = scan.next(); sc scan.next() scan.next scan addToQueue(State.A, sa) addToQueue State.A State State.A sa addToQueue(State.B, sb) addToQueue State.B State State.B sb addToQueue(State.C, sc) addToQueue State.C State State.C sc while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        } true {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        } String elm = poll(); elm poll() poll changeQueueState(elm) changeQueueState elm if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            } isEnd() isEnd {
                System.out.println(CURRENT_STATE);
                break;
            } System.out.println(CURRENT_STATE) System.out.println System.out System System.out CURRENT_STATE break; String[] args args /**
     * 操作するキューオブジェクトを引数のオブジェクト名の対象に変更する
     */
    private static void changeQueueState(String elm) {
        CURRENT_STATE = State.getEnum(elm);
    } changeQueueState {
        CURRENT_STATE = State.getEnum(elm);
    } CURRENT_STATE = State.getEnum(elm) CURRENT_STATE State.getEnum(elm) State.getEnum State elm String elm elm /**
     * 現在の参照キューが空かどうかを判定する
     */
    private static boolean isEnd() {
        return Qmap.get(CURRENT_STATE).isEmpty();
    } isEnd {
        return Qmap.get(CURRENT_STATE).isEmpty();
    } return Qmap.get(CURRENT_STATE).isEmpty(); Qmap.get(CURRENT_STATE).isEmpty() Qmap.get(CURRENT_STATE).isEmpty Qmap.get(CURRENT_STATE) Qmap.get Qmap CURRENT_STATE /**
     * 現在の参照キューから値をpollする
     */
    private static String poll() {
        return Qmap.get(CURRENT_STATE).poll();
    } poll {
        return Qmap.get(CURRENT_STATE).poll();
    } return Qmap.get(CURRENT_STATE).poll(); Qmap.get(CURRENT_STATE).poll() Qmap.get(CURRENT_STATE).poll Qmap.get(CURRENT_STATE) Qmap.get Qmap CURRENT_STATE /**
     * 入力文字を属性に応じたキューに追加する。
     */
    private static void addToQueue(State state, String s) {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    } addToQueue {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    } Queue<String> queue = Qmap.get(state); queue Qmap.get(state) Qmap.get Qmap state for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        } int i = 0; int i = 0; i 0 i < s.length() i s.length() s.length s i++ i++ i {
            queue.add(String.valueOf(s.charAt(i)));
        } {
            queue.add(String.valueOf(s.charAt(i)));
        } queue.add(String.valueOf(s.charAt(i))) queue.add queue String.valueOf(s.charAt(i)) String.valueOf String s.charAt(i) s.charAt s i State state state String s s enum State {
        A, B, C;
        public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        }
    } State A A B B C C public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        } getEnum {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        } for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            } State state State.values() State.values State {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            } {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            } if (state.name().toLowerCase().equals(s)) {
                    return state;
                } state.name().toLowerCase().equals(s) state.name().toLowerCase().equals state.name().toLowerCase() state.name().toLowerCase state.name() state.name state s {
                    return state;
                } return state; state throw new IllegalArgumentException(); new IllegalArgumentException() String s s import java.util.ArrayDeque;
impor import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.Map;
import java.util.Qu public class Main {

    static Map<State, Queue<String>> Qmap = new HashMap<>();
    static {
        Qmap.put(State.A, new ArrayDeque<>());
        Qmap.put(State.B, new ArrayDeque<>());
        Qmap.put(State.C, new ArrayDeque<>());
    }
    static State CURRENT_STATE = State.A;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    }

    /**
     * 操作するキューオブジェクトを引数のオブジェクト名の対象に変更する
     */
    private static void changeQueueState(String elm) {
        CURRENT_STATE = State.getEnum(elm);
    }

    /**
     * 現在の参照キューが空かどうかを判定する
     */
    private static boolean isEnd() {
        return Qmap.get(CURRENT_STATE).isEmpty();
    }

    /**
     * 現在の参照キューから値をpollする
     */
    private static String poll() {
        return Qmap.get(CURRENT_STATE).poll();
    }

    /**
     * 入力文字を属性に応じたキューに追加する。
     */
    private static void addToQueue(State state, String s) {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    }

    /**
     * どのキューを参照しているかを示す為の文字列属性
     */
    enum State {
        A, B, C;
        public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        }
    }
} public class Main {

    static Map<State, Queue<String>> Qmap = new HashMap<>();
    static {
        Qmap.put(State.A, new ArrayDeque<>());
        Qmap.put(State.B, new ArrayDeque<>());
        Qmap.put(State.C, new ArrayDeque<>());
    }
    static State CURRENT_STATE = State.A;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    }

    /**
     * 操作するキューオブジェクトを引数のオブジェクト名の対象に変更する
     */
    private static void changeQueueState(String elm) {
        CURRENT_STATE = State.getEnum(elm);
    }

    /**
     * 現在の参照キューが空かどうかを判定する
     */
    private static boolean isEnd() {
        return Qmap.get(CURRENT_STATE).isEmpty();
    }

    /**
     * 現在の参照キューから値をpollする
     */
    private static String poll() {
        return Qmap.get(CURRENT_STATE).poll();
    }

    /**
     * 入力文字を属性に応じたキューに追加する。
     */
    private static void addToQueue(State state, String s) {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    }

    /**
     * どのキューを参照しているかを示す為の文字列属性
     */
    enum State {
        A, B, C;
        public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        }
    }
} Main
import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;

public class Main {

    static Map<State, Queue<String>> Qmap = new HashMap<>();
    static {
        Qmap.put(State.A, new ArrayDeque<>());
        Qmap.put(State.B, new ArrayDeque<>());
        Qmap.put(State.C, new ArrayDeque<>());
    }
    static State CURRENT_STATE = State.A;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String sa = scan.next();
        String sb = scan.next();
        String sc = scan.next();

        addToQueue(State.A, sa);
        addToQueue(State.B, sb);
        addToQueue(State.C, sc);

        while (true) {
            String elm = poll();
            // System.err.printf("state:%s poll:%s\n", CURRENT_STATE, elm);
            changeQueueState(elm);

            if (isEnd()) {
                System.out.println(CURRENT_STATE);
                break;
            }
        }
    }

    /**
     * 操作するキューオブジェクトを引数のオブジェクト名の対象に変更する
     */
    private static void changeQueueState(String elm) {
        CURRENT_STATE = State.getEnum(elm);
    }

    /**
     * 現在の参照キューが空かどうかを判定する
     */
    private static boolean isEnd() {
        return Qmap.get(CURRENT_STATE).isEmpty();
    }

    /**
     * 現在の参照キューから値をpollする
     */
    private static String poll() {
        return Qmap.get(CURRENT_STATE).poll();
    }

    /**
     * 入力文字を属性に応じたキューに追加する。
     */
    private static void addToQueue(State state, String s) {
        Queue<String> queue = Qmap.get(state);
        for (int i = 0; i < s.length(); i++) {
            queue.add(String.valueOf(s.charAt(i)));
        }
    }

    /**
     * どのキューを参照しているかを示す為の文字列属性
     */
    enum State {
        A, B, C;
        public static State getEnum(String s) {
            for (State state : State.values()) {
                if (state.name().toLowerCase().equals(s)) {
                    return state;
                }
            }
            throw new IllegalArgumentException();
        }
    }
}
