#include <bits/stdc++.h>
using namespace std;
const int MOD = (int)1e9 + 7;
const int MAXN = (int)5007;
const int infint = (int)1e9;
const long long inf = (long long)1e18;
string s;
int a[MAXN], grundy[MAXN];
int mex(vector<int> v) {
  sort(v.begin(), v.end());
  int t = 0;
  for (int i = 0; i < v.size(); i++)
    if (v[i] > t)
      return t;
    else if (v[i] == t)
      t++;
  return t;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> s;
  for (int i = 1; i < s.size() - 1; i++)
    if (s[i - 1] == s[i + 1]) a[i] = 1;
  int xo = 0;
  grundy[0] = 0, grundy[1] = 1, grundy[2] = 1;
  for (int i = 3; i <= s.size(); i++) {
    vector<int> v;
    v.push_back(grundy[i - 2]);
    for (int j = 0; j <= i - 3; j++) {
      int x = j, y = i - 3 - j;
      v.push_back((grundy[x] ^ grundy[y]));
    }
    grundy[i] = mex(v);
  }
  int cnt = 0, n = s.size() + 1, ID = -1;
  vector<pair<int, int> > to;
  for (int i = 0; i < s.size(); i++) {
    if (a[i] == 1)
      cnt++;
    else {
      if (cnt) to.push_back({i - cnt, cnt});
      xo ^= grundy[cnt], cnt = 0;
    }
  }
  if (xo == 0) return cout << "Second", 0;
  cout << "First\n";
  for (auto u : to) {
    if (ID != -1) continue;
    if (u.second == 1)
      if (xo == 1) return cout << u.first + 1, 0;
    if ((xo ^ grundy[u.second] ^ grundy[u.second - 2]) == 0)
      return cout << u.first + 1, 0;
    for (int j = 0; j <= u.second - 3; j++) {
      int nw = xo ^ grundy[u.second] ^ grundy[j] ^ grundy[u.second - 3 - j];
      if (nw == 0) return cout << u.first + j + 2, 0;
    }
  }
}
