N, M = map(int, input().split()) S = [input() for _ in range(N)] def f(T): if len(T) == 3: print(-1) exit() T = sorted(list(T)) if len(T) == 0: return "C", "Z" elif len(T) == 1: if T[0] == "G": return "P", "G" elif T[0] == "C": return "G", "C" else: return "C", "P" else: if T == ["C", "G"]: return "G", "C" elif T == ["C", "P"]: return "C", "P" else: return "P", "G" ans = [] nokori = set([i for i in range(N)]) for j in range(M): T = set() for i in nokori: T.add(S[i][j]) dasu, kesu = f(T) ans.append(dasu) D = [] for i in nokori: if S[i][j] == kesu: D.append(i) for d in D: nokori.remove(d) if nokori: print(-1) else: print("".join(ans))