#include // #include // #include // #include // #include // #include // using namespace atcoder; using namespace std; using ll = long long; using ull = unsigned long long; template using max_heap = priority_queue; template using min_heap = priority_queue, greater<>>; ll ll_min = numeric_limits::min(); ll ll_max = numeric_limits::max(); ll ALPHABET_N = 26; // using mint = modint998244353; #define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++) #define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++) #define all(a) a.begin(), a.end() int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll n, m; cin >> n >> m; vector S(n); rep(i, n) cin >> S[i]; string ans; rep(i, m) { set st; rep(j, n) { st.insert(S[j][i]); } if (st.size() == 1) { char c = *st.begin(); if (c == 'G') ans += 'P'; if (c == 'C') ans += 'G'; if (c == 'P') ans += 'C'; } else if (st.size() == 2) { if (st == set({'P', 'G'})) ans += 'P'; if (st == set({'P', 'C'})) ans += 'C'; if (st == set({'G', 'C'})) ans += 'G'; } else { ans = "-1"; break; } } cout << ans << endl; return 0; }