func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 5010;   int f[MAXN];   string s;   int l;   int ans[MAXN];   int help[MAXN];   int nim[MAXN];   int start[MAXN];   void init() {     f[0] = 0;     f[1] = 1;     for (int i = 2; i <= l; ++i) {       memset(nim, 0, sizeof(nim));       nim[f[i - 2] ^ f[0]] = 1;       for (int j = 2; j <= i - 1; ++j) nim[f[i - j - 1] ^ f[j - 2]] = 1;       for (int j = 0;; ++j)         if (nim[j] == 0) {           f[i] = j;           break;         }     }   }   int main() {     cin >> s;     l = s.size();     init();     int top = 0;     for (int i = 1; i < l - 1; ++i)       if (s[i - 1] == s[i + 1]) ans[++top] = i;     int cnt = 0;     if (top >= 1) {       help[1] = 1;       start[1] = ans[1];       cnt = 1;     }     for (int i = 2; i <= top; ++i)       if (ans[i] == ans[i - 1] + 1)         help[cnt]++;       else {         cnt++;         help[cnt] = 1;         start[cnt] = ans[i];       }     int out = 0;     for (int i = 1; i <= cnt; ++i) out = out ^ f[help[i]];     if (!out)       cout <<  Second  << endl;     else {       cout <<  First  << endl;       for (int j = 1; j <= cnt; ++j) {         if (help[j] == 1) {           if (!out ^ f[help[j]]) {             cout << start[j] + 1 << endl;             return 0;           }         }         if (!(out ^ f[help[j]] ^ f[help[j] - 2])) {           cout << start[j] + 1 << endl;           return 0;         }         for (int k = 2; k <= help[j] - 1; ++k)           if (!(out ^ f[help[j]] ^ f[help[j] - k - 1] ^ f[k - 2])) {             cout << start[j] + k << endl;             return 0;           }       }     }     return 0;   }   