A, B = 2.times.map do gets.to_i.times.map do gets.chomp end end pf = A.map { |a| a[0] } & B.map { |b| b[0] } (p -1; exit) if pf.size > 1 z = pf[0] x = A.find { |a| a[0] == z } y = B.find { |b| b[0] == z } until x.size == y.size x += A.find { |a| a[0] == y[x.size] } while x.size < y.size y += B.find { |b| b[0] == x[y.size] } while y.size < x.size end puts x