#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())

// {{{
template<typename T>
void printmatrix(vector<vector<T> > ar){
    for (int i = 0; i < (int)ar.size(); i++) {
        for (int j = 0; j < (int)ar[0].size(); j++) {
            cout << ar[i][j];
        }
        cout << endl;
    }
}

template<typename T>
void printvector(vector<T> vec){
    for (int i = 0; i < (int)vec.size(); i++) {
        cout << vec[i] << endl;
    }
}

template<typename T>
void unique(vector<T>& vec){
    sort(vec.begin(), vec.end());
    vec.erase(unique(vec.begin(), vec.end()), vec.end());
}

template<typename T>
vector<T> cumsum(vector<T> vec){
    vector<T> newvec((T)vec.size());
    int tmp = 0;
    for (int i = 0; i < (int)vec.size(); i++) {
        tmp += vec[i];
        newvec[i] = tmp;
    }

    return newvec;
}

template<typename T>
T digitsum(T x){
    T y=0;
    while(x){
        y += x % 10;
        x /= 10;
    }

    return y;
}

template<typename T>
T gcd(T x, T y){
    if (x == 0 || y == 0) {
        return 0;
    }

    while (x != y){
        if (x > y) {
            x -= y;
        }else{
            y -= x;
        }
    }
    return x;
}

// }}}
/* vim:set foldmethod=marker: */

void solve(){
    string sa,sb,sc;
    cin >> sa >> sb >> sc;

    int lena,lenb,lenc;
    lena = sa.length();
    lenb = sb.length();
    lenc = sc.length();

    char now='a';
    int a=0,b=0,c=0;
    while (true) {
        if (now == 'a') {
            if (a == lena) {
                cout << "A" << endl;
                break;
            }
            now = sa[a];
            a++;
        }else if (now == 'b'){
            if (b == lenb) {
                cout << "B" << endl;
                break;
            }
            now = sb[b];
            b++;
        }else{
            if (c == lenc) {
                cout << "C" << endl;
                break;
            }
            now = sc[c];
            c++;
        }
    }
    // while (a <= lena && b <= lenb  && c <= lenc) {
    //     if (now == 'a') {
    //         if (a < lena) {
    //             now = sa[a];
    //             a++;
    //         }else{
    //             a++;
    //         }
    //     }else if (now == 'b'){
    //         if (b < lenb){
    //             now = sa[b];
    //             b++;
    //         }else{
    //             b++;
    //         }
    //     }else{
    //         if (c < lenc){
    //             now = sc[c];
    //             c++;
    //         }else{
    //             c++;
    //         }
    //     }
    // }

    // cout << now << endl;
    // cout << a << endl;
    // cout << b << endl;
    // cout << c << endl;
    // if (a > lena) {
    //     cout << "A" << endl;
    // }else if (b > lenb){
    //     cout << "B" << endl;
    // }else{
    //     cout << "C" << endl;
    // }

    // if (now == 'a') {
    //     cout << "A" << endl;
    // }else if (now == 'b'){
    //     cout << "B" << endl;
    // }else{
    //     cout << "C" << endl;
    // }


    return;
}

int main(int argc, char const* argv[])
{
    solve();
    return 0;
}


Measured memory_bytes: 256