#include <bits/stdc++.h>   using namespace std;   void setIO(string name =   ) {     ios_base::sync_with_stdio(0);     cin.tie(0);     if (int((name).size())) {       freopen((name +  .in ).c_str(),  r , stdin);       freopen((name +  .out ).c_str(),  w , stdout);     }   }   long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }   long long mcm(long long a, long long b) { return (a * b) / gcd(a, b); }   bool prime(long long n, long long i) {     if (i > sqrt(n)) return true;     if (n % i == 0)       return false;     else       return prime(n, i + 1);   }   struct compii {     bool operator()(const pair<int, int> &a, const pair<int, int> &b) {       if (a.first == a.second) return a.second < b.second;       return a.first > b.first;     }   };   bool comp(int a, int b) { return a > b; }   int dx[] = {1, 0, -1, 0};   int dy[] = {0, 1, 0, -1};   const int mod = 1e9 + 7;   const long long inf = 1e18;   bool check(string a, string b) {     if (a ==  rock  and b ==  scissors ) return true;     if (a ==  paper  and b ==  rock ) return true;     if (a ==  scissors  and b ==  paper ) return true;     return false;   }   void solve() {     string first, m, second;     cin >> first >> m >> second;     if (check(first, m) and check(first, second))       cout <<  F ;     else if (check(m, second) and check(m, first))       cout <<  M ;     else if (check(second, first) and check(second, m))       cout <<  S ;     else       cout <<  ? ;   }   int main() {     setIO(  );     int t = 1;     while (t-- > 0) solve();     return 0;   }   