import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	}
} import java.util.ArrayList; ArrayList java.util import java.util.Arrays; Arrays java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	} main {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String Sa = sc.next(); Sa sc.next() sc.next sc String Sb = sc.next(); Sb sc.next() sc.next sc String Sc = sc.next(); Sc sc.next() sc.next sc String flag = "A"; flag "A" String result = null; result null List<String> listA = new ArrayList<>(Arrays.asList(Sa.split(""))); listA new ArrayList<>(Arrays.asList(Sa.split(""))) List<String> listB = new ArrayList<>(Arrays.asList(Sb.split(""))); listB new ArrayList<>(Arrays.asList(Sb.split(""))) List<String> listC = new ArrayList<>(Arrays.asList(Sc.split(""))); listC new ArrayList<>(Arrays.asList(Sc.split(""))) do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null); result == null result null {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			} "A".equals(flag) "A".equals "A" flag {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			} if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				} listA.size() == 0 listA.size() listA.size listA 0 {
					result = "A";
				} result = "A" result "A" {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				} for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					} int i = 0; int i = 0; i 0 i < listA.size() i listA.size() listA.size listA {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					} {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					} if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						} "a".equals(listA.get(i)) "a".equals "a" listA.get(i) listA.get listA i {
							listA.remove(i);
							continue;
						} listA.remove(i) listA.remove listA i continue; if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						} "b".equals(listA.get(i)) "b".equals "b" listA.get(i) listA.get listA i {
							listA.remove(i);
							flag = "B";
							break;
						} listA.remove(i) listA.remove listA i flag = "B" flag "B" break; if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						} "c".equals(listA.get(i)) "c".equals "c" listA.get(i) listA.get listA i {
							listA.remove(i);
							flag = "C";
							break;
						} listA.remove(i) listA.remove listA i flag = "C" flag "C" break; if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			} "B".equals(flag) "B".equals "B" flag {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			} if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				} listB.size() == 0 listB.size() listB.size listB 0 {
					result = "B";
				} result = "B" result "B" {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				} for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					} int i = 0; int i = 0; i 0 i < listB.size() i listB.size() listB.size listB {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					} {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					} if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						} "a".equals(listB.get(i)) "a".equals "a" listB.get(i) listB.get listB i {
							listB.remove(i);
							flag ="A";
							break;
						} listB.remove(i) listB.remove listB i flag ="A" flag "A" break; if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						} "b".equals(listB.get(i)) "b".equals "b" listB.get(i) listB.get listB i {
							listB.remove(i);
							continue;
						} listB.remove(i) listB.remove listB i continue; if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						} "c".equals(listB.get(i)) "c".equals "c" listB.get(i) listB.get listB i {
							listB.remove(i);
							flag = "C";
							break;
						} listB.remove(i) listB.remove listB i flag = "C" flag "C" break; if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			} "C".equals(flag) "C".equals "C" flag {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			} if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				} listC.size() == 0 listC.size() listC.size listC 0 {
					result = "C";
				} result = "C" result "C" {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				} for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					} int i = 0; int i = 0; i 0 i < listC.size() i listC.size() listC.size listC {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					} {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					} if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						} "a".equals(listC.get(i)) "a".equals "a" listC.get(i) listC.get listC i {
							listC.remove(i);
							flag ="A";
							break;
						} listC.remove(i) listC.remove listC i flag ="A" flag "A" break; if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						} "b".equals(listC.get(i)) "b".equals "b" listC.get(i) listC.get listC i {
							listC.remove(i);
							flag = "B";
							break;
						} listC.remove(i) listC.remove listC i flag = "B" flag "B" break; if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						} "c".equals(listC.get(i)) "c".equals "c" listC.get(i) listC.get listC i {
							listC.remove(i);
							continue;
						} listC.remove(i) listC.remove listC i continue; System.out.println(result) System.out.println System.out System System.out result String[] args args public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	}
} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	}
} Main
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String Sa = sc.next();
		String Sb = sc.next();
		String Sc = sc.next();
		String flag = "A";
		String result = null;
		List<String> listA = new ArrayList<>(Arrays.asList(Sa.split("")));
		List<String> listB = new ArrayList<>(Arrays.asList(Sb.split("")));
		List<String> listC = new ArrayList<>(Arrays.asList(Sc.split("")));

		do {
			if("A".equals(flag)) {
				if(listA.size() == 0) {
					result = "A";
				} else {
					for(int i = 0; i < listA.size();) {
						if("a".equals(listA.get(i))){
							listA.remove(i);
							continue;
						} else if ("b".equals(listA.get(i))) {
							listA.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listA.get(i))) {
							listA.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("B".equals(flag)) {
				if(listB.size() == 0) {
					result = "B";
				} else {
					for(int i = 0; i < listB.size();) {
						if("a".equals(listB.get(i))){
							listB.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listB.get(i))) {
							listB.remove(i);
							continue;
						} else if ("c".equals(listB.get(i))) {
							listB.remove(i);
							flag = "C";
							break;
						}
					}
				}
			}
			if("C".equals(flag)) {
				if(listC.size() == 0) {
					result = "C";
				} else {
					for(int i = 0; i < listC.size();) {
						if("a".equals(listC.get(i))){
							listC.remove(i);
							flag ="A";
							break;
						} else if ("b".equals(listC.get(i))) {
							listC.remove(i);
							flag = "B";
							break;
						} else if ("c".equals(listC.get(i))) {
							listC.remove(i);
							continue;
						}
					}
				}
			}
		} while(result == null);
		System.out.println(result);
	}
}