#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7, K = 26;
int depth[N];
vector<int> cld[N];
char ch[N];
vector<int> adj[N];
int par[N], rep[N], sz[N];
int mx[N][K], cnt[N][K];
int total[N];
int badcount = 0;
void setup(int u, int _par) {
  if (cld[u].size() == 1 && u > 1) {
    setup(cld[u][0], _par);
    rep[u] = rep[cld[u][0]];
    sz[rep[u]]++;
  } else {
    par[u] = _par;
    adj[par[u]].push_back(u);
    rep[u] = u;
    for (int v : cld[u]) {
      setup(v, u);
    }
    if (u != 1) sz[u]++;
    if (adj[u].size()) sz[u] += sz[adj[u][0]];
  }
}
void push(int u, int a) {
  if (par[u] && total[par[u]] > sz[u]) badcount--;
  int mxa = 0;
  for (int v : adj[par[u]]) mxa = max(mxa, mx[v][a]);
  total[par[u]] -= mxa;
  mx[u][a] = 0;
  for (int v : adj[u]) mx[u][a] = max(mx[u][a], mx[v][a]);
  mx[u][a] += cnt[u][a];
  mxa = 0;
  for (int v : adj[par[u]]) mxa = max(mxa, mx[v][a]);
  total[par[u]] += mxa;
  if (par[u] && total[par[u]] > sz[u]) badcount++;
  if (u != 1) push(par[u], a);
}
void update(int u, char prv, char nw) {
  if (prv != '{') {
    cnt[u][prv - 'a']--;
    push(u, prv - 'a');
  }
  if (nw != '{') {
    cnt[u][nw - 'a']++;
    push(u, nw - 'a');
  }
}
int n, q;
void print() {
  if (badcount)
    cout << "Fou\n";
  else {
    cout << "Shi ";
    int ans = 0;
    int left = sz[1];
    for (int i = 0; i < 26; i++) left -= mx[1][i];
    for (int i = 0; i < 26; i++) ans += (i + 1) * (left + mx[1][i]);
    cout << ans << "\n";
  }
}
int main() {
  cin >> n >> q;
  for (int i = 2; i <= n; i++) {
    int p;
    cin >> p >> ch[i];
    if (ch[i] == '?') ch[i] = '{';
    cld[p].push_back(i);
    depth[i] = 1 + depth[p];
  }
  bool bad = false;
  for (int i = 1; i <= n; i++)
    if (cld[i].empty() && depth[i] != depth[n]) bad = true;
  if (bad) {
    while (q--) cout << "Fou\n";
    return 0;
  }
  setup(1, 0);
  for (int i = 2; i <= n; i++) update(rep[i], '{', ch[i]);
  while (q--) {
    int x;
    char c;
    cin >> x >> c;
    if (c == '?') c = '{';
    update(rep[x], ch[x], c);
    ch[x] = c;
    print();
  }
}
