// yukicoder: No.517 壊れたアクセサリー // 2019.6.26 bal4u #include #if 1 #define gc() getchar_unlocked() #define pc(c) putchar_unlocked(c) #else #define gc() getchar() #define pc(c) putchar(c) #endif int in() { int n = 0, c = gc(); do n = 10 * n + (c & 0xf), c = gc(); while (c >= '0'); return n; } int ins(char *s) { char *p = s; do *s = gc(); while (*s++ > ' '); *--s = 0; return s - p; } void outs(char *s) { while (*s) pc(*s++); } typedef struct { int p, n; } T; T t[30]; int nex[30]; char a[30], f[30]; int main() { int i, j, k, N, w, top; for (j = 0; j < 2; j++) { N = in(); for (i = 0; i < N; i++) { w = ins(a); for (k = 0; k < w; k++) { int c = a[k] - 'A' + 1; f[c] = 1; if (k > 0) t[c].p = a[k-1]-'A'+1; if (k < w-1) t[c].n = a[k+1]-'A'+1; } } } top = 0; for (i = 1; i <= 27; i++) if (f[i]) { if (t[i].p == 0) { if (top) { outs("-1\n"); return 0; } top = i; } } while (top) { pc(top+'A'-1); top = t[top].n; } pc('\n'); }