N, M = map(int,input().split()) data = [] for i in range(N): data.append(input()) li = [True] * N ans = [] for i in range(M): s = set() for j in range(N): if(li[j]): s.add(data[j][i]) if(len(s) == 3): print(-1) exit() if(len(s) == 1): s = list(s) if(s[0] == "G"): a = "P" if(s[0] == "C"): a = "G" if(s[0] == "P"): a = "C" ans.append(a) for i in range(M -i - 1): ans.append("G") print("".join(ans)) exit() if(len(s) == 2): b = sorted(list(s)) if(b[0] == "C" and b[1] == "P"): a = "P" c = "C" if(b[0] == "C" and b[1] == "G"): a = "C" c = "G" if(b[0] == "G" and b[1] == "P"): a = "G" c = "P" ans.append(c) for j in range(N): if(li[j] and data[j][i] == a): li[j] = False print(-1)