#!/usr/bin/env python3
import functools

lt = [[None for j in range(26)] for i in range(26)]
impossible = 'IMPOSSIBLE'

nc = int(input())
for i in range(nc):
  a, sg, b = input().split()
  a = ord(a) - ord('a')
  b = ord(b) - ord('a')
  assert(sg in ('<','>'))
  sg = (sg == '<')
  if lt[a][b] is not None and lt[a][b] != sg:
    print(impossible)
    exit(0)
  lt[a][b] = sg
  lt[b][a] = not sg

for i in range(26):
  for j in range(26):
    for k in range(26):
      if lt[j][i] and lt[i][k]:
        lt[j][k] = True
        lt[k][j] = False

s = input()

has = [0 for i in range(26)]
for i in [ord(x)-ord('a') for x in s]:
  has[i] += 1

for i in range(26):
  if has[i] >= 2 and lt[i][i]:
    print(impossible)
    exit(0)
  for j in range(26):
    if has[i] >= 1 and has[j] >= 1 and lt[i][j] and lt[j][i]:
      print(impossible)
      exit(0)

rank = [0 for i in range(26)]
for i in range(26):
  for j in range(26):
    if lt[i][j]:
      rank[j] += 1

s = ''.join(sorted(s, key=lambda x: rank[ord(x)-ord('a')]))
print(s)
