N = gets.to_i A = N.times.map { gets.chomp } M = gets.to_i B = M.times.map { gets.chomp } S = A.map(&:size).sum E1 = Hash.new { |h, k| h[k] = [] } ANS = [] N.times do |i| a1 = A[i].chars a1.each_cons(2) do |c1, c2| E1[c1] << c2 end N.times do |j| next if i == j a2 = A[j].chars E1[a1.last] << a2.first end end E2 = Hash.new { |h, k| h[k] = [] } M.times do |i| b1 = B[i].chars b1.each_cons(2) do |c1, c2| E2[c1] << c2 end M.times do |j| next if i == j b2 = B[j].chars E2[b1.last] << b2.first end end def dfs(c, str, visited) visited[c] = true if str.size == S ANS << str return end E1[c].each do |nc| next if visited[nc] next if not E2[c].include?(nc) dfs(nc, str + nc, visited) end visited[c] = false end B.each do |b| next if not A.find { |a| a[0] == b[0] } visited = Hash.new(false) dfs(b[0], b[0], visited) end if ANS.size == 1 puts ANS.first else puts -1 end