func_code_string: #include <bits/stdc++.h>   using namespace std;   void run();   int main() {     ios::sync_with_stdio(0);     run();   }   int n;   int v[5001];   char s[5001];   int grundy[5001];   void run() {     cin >> s;     n = strlen(s);     vector<int> blob;     for (int i = 0; i < n; i++)       if (0 < i and i + 1 < n and s[i - 1] == s[i + 1])         blob.back()++;       else if (blob.empty() or blob.back())         blob.push_back(0);     if (not blob.empty() and blob.back() == 0) blob.pop_back();     static int can[5001];     for (int i = 1; i <= 5000; i++) {       for (int j = 0; j < i; j++) {         can[grundy[max(0, j - 1)] ^ grundy[max(0, i - j - 2)]] = i;       }       while (can[grundy[i]] == i) ++grundy[i];     }     int good = 0;     for (int i : blob) good ^= grundy[i];     cout << (good ?  First  :  Second ) << endl;     if (good) {       int id = 0;       for (int i = 1, x = 0; i + 1 < n; ++i, ++x) {         if (s[i - 1] == s[i + 1]) {           if (i > 1 and s[i - 2] != s[i + 0]) ++id, x = 0;           int val = good ^ grundy[blob[id]];           if (val == (grundy[max(0, x - 1)] ^ grundy[max(0, blob[id] - x - 2)])) {             cout << i + 1 << endl;             return;           }         }       }     }   }   