#include <bits/stdc++.h>
using namespace std;
char A[100 + 3], B[100 + 3], C[100 + 3], Ans[100 + 3];
int f[100 + 3][100 + 3][100 + 3], prei[100 + 3][100 + 3][100 + 3],
    prej[100 + 3][100 + 3][100 + 3], prek[100 + 3][100 + 3][100 + 3];
int Go[100 + 3][26], fail[100 + 3], la, lb, lc, len, ansi, ansj, ansk;
int main() {
  scanf("%s%s%s", A + 1, B + 1, C + 1);
  la = strlen(A + 1);
  lb = strlen(B + 1);
  lc = strlen(C + 1);
  Go[0][C[1] - 'A'] = 1;
  Go[1][C[1] - 'A'] = 1;
  Go[1][C[2] - 'A'] = 2;
  for (int i = 2; i <= lc; i++) {
    int w = fail[i - 1];
    for (; w && C[w + 1] != C[i]; w = fail[w])
      ;
    if (C[i] == C[w + 1]) w++;
    fail[i] = w;
    for (int j = 0; j < 26; j++) {
      int w = i;
      for (; w && C[w + 1] - 'A' != j; w = fail[w])
        ;
      if (C[w + 1] - 'A' == j) w++;
      Go[i][j] = w;
    }
  }
  memset(f, 130, sizeof(f));
  f[0][0][0] = 0;
  for (int i = 0; i < la; i++)
    for (int j = 0; j < lb; j++)
      for (int k = 0; k < lc; k++) {
        if (f[i][j][k] < 0) continue;
        if (f[i + 1][j][k] < f[i][j][k]) {
          f[i + 1][j][k] = f[i][j][k];
          prei[i + 1][j][k] = i;
          prej[i + 1][j][k] = j;
          prek[i + 1][j][k] = k;
        }
        if (f[i][j + 1][k] < f[i][j][k]) {
          f[i][j + 1][k] = f[i][j][k];
          prei[i][j + 1][k] = i;
          prej[i][j + 1][k] = j;
          prek[i][j + 1][k] = k;
        }
        if (A[i + 1] == B[j + 1]) {
          int tk = Go[k][A[i + 1] - 'A'];
          if (f[i + 1][j + 1][tk] < f[i][j][k] + 1) {
            f[i + 1][j + 1][tk] = f[i][j][k] + 1;
            prei[i + 1][j + 1][tk] = i;
            prej[i + 1][j + 1][tk] = j;
            prek[i + 1][j + 1][tk] = k;
          }
        }
      }
  for (int i = 1; i <= la; i++)
    for (int j = 1; j <= lb; j++)
      for (int k = 0; k < lc; k++)
        if (f[i][j][k] > f[ansi][ansj][ansk]) {
          ansi = i, ansj = j, ansk = k;
        }
  len = f[ansi][ansj][ansk];
  if (!len) {
    printf("0");
    return 0;
  }
  for (int w = len; w;) {
    int ti = prei[ansi][ansj][ansk], tj = prej[ansi][ansj][ansk],
        tk = prek[ansi][ansj][ansk];
    if (f[ti][tj][tk] < f[ansi][ansj][ansk]) Ans[w--] = A[ansi];
    ansi = ti, ansj = tj, ansk = tk;
  }
  printf("%s", Ans + 1);
}
