#include <bits/stdc++.h>
using namespace std;
const int INF = 1000 * 1000 * 1000 + 7;
const double EPS = 1e-9;
const double PI = acos(-1.0);
template <class T>
int chmin(T &t, T f) {
  return (t > f) ? (t = f, 1) : 0;
}
template <class T>
int chmax(T &t, T f) {
  return (t < f) ? (t = f, 1) : 0;
}
inline int getint() {
  int a;
  return scanf("%d", &a) ? a : (fprintf(stderr, "trying to read\n"), -1);
}
inline double getdouble() {
  double a;
  return scanf("%lf", &a) ? a : (fprintf(stderr, "trying to read\n"), -1);
}
const int N = 1 << 13;
int sg[N];
void myCode() {
  sg[0] = 0;
  sg[1] = sg[2] = 1;
  for (int i = (int)3; i < (int)N; i++) {
    vector<int> reach(N, 0);
    for (int j = (int)0; j < (int)i; j++)
      reach[sg[max(0, j - 1)] ^ sg[max(0, i - 1 - j - 1)]] = 1;
    for (int j = (int)0; j < (int)i; j++)
      if (!reach[j]) {
        sg[i] = j;
        break;
      }
  }
  string s;
  cin >> s;
  vector<pair<int, int> > lens;
  int cur = 0;
  for (int i = (int)1; i < (int)((int)(s).size()) - 1; i++) {
    if (s[i - 1] == s[i + 1])
      ++cur;
    else {
      lens.push_back(pair<int, int>(cur, i - cur));
      cur = 0;
    }
  }
  lens.push_back(pair<int, int>(cur, ((int)(s).size()) - 1 - cur));
  int ret = 0;
  for (int i = (int)0; i < (int)((int)(lens).size()); i++)
    ret ^= sg[lens[i].first];
  printf(ret ? "First\n" : "Second\n");
  if (ret)
    for (int i = (int)0; i < (int)((int)(lens).size()); i++)
      for (int j = (int)0; j < (int)lens[i].first; j++)
        if ((ret ^ sg[lens[i].first] ^ sg[max(0, j - 1)] ^
             sg[max(0, lens[i].first - 1 - j - 1)]) == 0) {
          printf("%d\n", lens[i].second + j + 1);
          return;
        }
}
int main() {
  myCode();
  return 0;
}
