#include using namespace std; using ll = long long; bool chmin(auto &a, auto b) { return a > b ? a = b, true : false; } bool chmax(auto &a, auto b) { return a < b ? a = b, true : false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin >> N >> M; vector S(N); for (int i = 0; i < N; i++) cin >> S[i]; vector I(N); iota(I.begin(), I.end(), 0); string ans; for (int j = 0; j < M; j++) { int G = 0, C = 0, P = 0; for (int i : I) { G |= (S[i][j] == 'G'); C |= (S[i][j] == 'C'); P |= (S[i][j] == 'P'); } int T = G + C + P; if (T == 3) { cout << -1 << endl; return 0; } else if (T == 2) { vector J; if (!G) { ans.push_back('C'); for (int i : I) { if (S[i][j] == 'C') J.push_back(i); } } else if (!C) { ans.push_back('P'); for (int i : I) { if (S[i][j] == 'P') J.push_back(i); } } else { ans.push_back('G'); for (int i : I) { if (S[i][j] == 'G') J.push_back(i); } } I = J; } else if (T == 1) { if (G) { ans.push_back('P'); } else if (C) { ans.push_back('G'); } else { ans.push_back('C'); } I.clear(); } else { ans.push_back('G'); } } cout << (I.size() ? "-1" : ans) << endl; }