#include <bits/stdc++.h>
using namespace std;
const int inv = numeric_limits<int>::max();
const int minv = numeric_limits<int>::min();
const int max_n = 5010;
int n;
char s[max_n + 5];
int G[max_n + 1];
bool U[max_n + 1];
pair<int, int> Q[max_n + 1];
int Qsz = 0;
int res;
void makemove() {
  for (int i = 0; i < Qsz; ++i) {
    int s = Q[i].first, l = Q[i].second;
    bool broken = false;
    for (int j = 1; j <= l; ++j)
      if ((G[max(j - 2, 0)] ^ G[max((l - 3 - (j - 2)), 0)]) == (G[l] ^ res)) {
        printf("%d\n", s + j - 1 + 1);
        broken = true;
        break;
      }
    if (broken) break;
  }
}
int main() {
  scanf("%s", s);
  for (n = 0; s[n] != '\0'; ++n)
    ;
  for (int i = 0; i < n + 1; ++i) {
    fill(U, U + n + 1, false);
    for (int j = 1; j <= i; ++j)
      U[G[max(j - 2, 0)] ^ G[max(i - 3 - (j - 2), 0)]] = true;
    int j = 0;
    while (U[j]) ++j;
    G[i] = j;
  }
  res = 0;
  int c = 0;
  for (int i = 1; i < n - 1; ++i) {
    if (s[i - 1] == s[i + 1])
      ++c;
    else {
      res ^= G[c];
      Q[Qsz++] = pair<int, int>(i - c, c);
      c = 0;
    }
  }
  res ^= G[c];
  Q[Qsz++] = pair<int, int>(n - 1 - c, c);
  c = 0;
  if (res) {
    printf("First\n");
    makemove();
  } else
    printf("Second\n");
  return 0;
}
