
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
  public static void main(String[] args) {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  }
  
  static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }
  
    String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() { 
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      }
  }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.StringTokenizer; StringTokenizer java.util public class Main {
  public static void main(String[] args) {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  }
  
  static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }
  
    String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() { 
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      }
  }
} Main public static void main(String[] args) {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  } main {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  } FastReader sc = new FastReader(); sc new FastReader() String a = sc.next(); a sc.next() sc.next sc String b = sc.next(); b sc.next() sc.next sc String c = sc.next(); c sc.next() sc.next sc int posA = 0; posA 0 int posB = -1; posB -1 1 int posC = -1; posC -1 1 char turn = 'a'; turn 'a' while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  } posA < a.length() && posB < b.length() && posC < c.length() posA < a.length() && posB < b.length() && posC < c.length() posA < a.length() posA a.length() a.length a posB < b.length() posB b.length() b.length b posC < c.length() posC c.length() c.length c {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  } switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  } turn case 'a': 'a' case 'a': posA++ posA if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  } posA == a.length() posA a.length() a.length a {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  } System.out.println("A") System.out.println System.out System System.out "A" System.exit(0) System.exit System 0 turn = a.charAt(posA) turn a.charAt(posA) a.charAt a posA break; case 'b': 'b' case 'b': posB++ posB if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  } posB == b.length() posB b.length() b.length b {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  } System.out.println("B") System.out.println System.out System System.out "B" System.exit(0) System.exit System 0 turn = b.charAt(posB) turn b.charAt(posB) b.charAt b posB break; case 'c': 'c' case 'c': posC++ posC if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  } posC == c.length() posC c.length() c.length c {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  } System.out.println("C") System.out.println System.out System System.out "C" System.exit(0) System.exit System 0 turn = c.charAt(posC) turn c.charAt(posC) c.charAt c posC break; String[] args args static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }
  
    String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() { 
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      }
  } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    } FastReader {
      br = new BufferedReader(new InputStreamReader(System.in));
    } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    } next { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    } while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      } try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        } catch (IOException  e) {
          e.printStackTrace();
        } IOException  e {
          e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
          st = new StringTokenizer(br.readLine());
        } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
      return Integer.parseInt(next());
    } nextInt {
      return Integer.parseInt(next());
    } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
      return Long.parseLong(next());
    } nextLong {
      return Long.parseLong(next());
    } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() { 
      return Double.parseDouble(next());
    } nextDouble { 
      return Double.parseDouble(next());
    } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      } nextLine {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      } String str = ""; str "" try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } IOException e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            str = br.readLine();
        } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
  public static void main(String[] args) {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  }
  
  static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }
  
    String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() { 
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      }
  }
} public class Main {
  public static void main(String[] args) {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  }
  
  static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }
  
    String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() { 
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      }
  }
} Main

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
  public static void main(String[] args) {
	  FastReader sc = new FastReader();
	  String a = sc.next();
	  String b = sc.next();
	  String c = sc.next();
	  int posA = 0;
	  int posB = -1;
	  int posC = -1;
	  char turn = 'a';
	  while (posA < a.length() && posB < b.length() && posC < c.length()) {
		  switch (turn) {
		  	  case 'a':
		  		  posA++;
		  		  if (posA == a.length()) {
		  			  System.out.println("A");
		  			  System.exit(0);
		  		  }
		  		  turn = a.charAt(posA);
		  		  break;
		  	  case 'b':
		  		  posB++;
		  		  if (posB == b.length()) {
		  			  System.out.println("B");
		  			  System.exit(0);
		  		  }
		  		  turn = b.charAt(posB);
		  		  break;
		  	  case 'c':
		  		  posC++;
		  		  if (posC == c.length()) {
		  			  System.out.println("C");
		  			  System.exit(0);
		  		  }
		  		  turn = c.charAt(posC);
		  		  break;
		  }
	  }
  }
  
  static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }
  
    String next() { 
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException  e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() { 
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
        try{
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
      }
  }
}
