N, M = (int(x) for x in input().split()) mem=[] for i in range(N): S=str(input()) mem.append(S) ans = [] ok = set() for i in range(M): S=set() for j in range(N): if j not in ok: S.add(mem[j][i]) if len(S) == 1: a = S.pop() if a == "G": ans.append("P") elif a == "C": ans.append("G") else: ans.append("C") for i in range(M-i-1): ans.append("G") print("".join(ans)) exit() elif len(S) == 3: print(-1) exit() else: if "G" in S and "P" in S: ans.append("P") for j in range(N): if mem[j][i] == "G": ok.add(j) elif "C" in S and "P" in S: ans.append("C") for j in range(N): if mem[j][i] == "P": ok.add(j) else: ans.append("G") for j in range(N): if mem[j][i] == "C": ok.add(j) if len(ok) == N: for i in range(M-i-1): ans.append("G") print("".join(ans)) exit() if len(ok) == N: print("".join(ans)) else: print(-1)