#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:64000000")
using namespace std;
void __never(int a) { printf("\nOPS %d", a); }
struct Int {
  unsigned int g : 15;
  unsigned int r : 15;
  unsigned int s : 15;
  unsigned int h : 15;
};
bool operator<(const Int& a, const Int& b) {
  if (a.g == b.g) {
    if (a.r == b.r) {
      if (a.s == b.s) return a.h < b.h;
      return a.s < b.s;
    }
    return a.r < b.r;
  }
  return a.g < b.g;
}
int n;
set<Int> w[2];
char s[50000];
Int Zero;
void init() {
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
}
void sol() {
  scanf("%d", &n);
  gets(s);
  gets(s);
  {
    if (!(strlen(s) == n)) {
      __never(57);
      cout.flush();
      cerr.flush();
      abort();
    }
  };
  w[0].insert(Zero);
  int ma = 0;
  for (int(I) = (0); (I) <= (n - 1); ++(I)) {
    int cur = I & 1;
    ma = max(ma, (int)((w[cur]).size()));
    w[1 - cur].clear();
    for (set<Int>::iterator IT = w[cur].begin(); IT != w[cur].end(); IT++) {
      Int h = *IT;
      bool ad = false;
      if (s[I] == 'G')
        h.g++;
      else if (s[I] == 'R')
        h.r++;
      else if (s[I] == 'S')
        h.s++;
      else if (s[I] == 'H')
        h.h++;
      else {
        {
          if (!(s[I] == '?')) {
            __never(76);
            cout.flush();
            cerr.flush();
            abort();
          }
        };
        ad = true;
        int mi = h.g;
        if (h.r < mi) mi = h.r;
        if (h.s < mi) mi = h.s;
        if (h.h < mi) mi = h.h;
        if (h.g == mi) {
          h.g++;
          w[1 - cur].insert(h);
          h.g--;
        }
        if (h.r == mi) {
          h.r++;
          w[1 - cur].insert(h);
          h.r--;
        }
        if (h.s == mi) {
          h.s++;
          w[1 - cur].insert(h);
          h.s--;
        }
        if (h.h == mi) {
          h.h++;
          w[1 - cur].insert(h);
          h.h--;
        }
      }
      if (!ad) w[1 - cur].insert(h);
    }
  }
  bool G, R, S, H;
  G = R = S = H = false;
  for (set<Int>::iterator IT = w[n & 1].begin(); IT != w[n & 1].end(); IT++) {
    Int h = *IT;
    int mi = h.g;
    if (h.r < mi) mi = h.r;
    if (h.s < mi) mi = h.s;
    if (h.h < mi) mi = h.h;
    if (h.g == mi) G = true;
    if (h.r == mi) R = true;
    if (h.s == mi) S = true;
    if (h.h == mi) H = true;
  }
  if (G) cout << "Gryffindor" << endl;
  if (H) cout << "Hufflepuff" << endl;
  if (R) cout << "Ravenclaw" << endl;
  if (S) cout << "Slytherin" << endl;
}
int main() {
  sol();
  return 0;
}
