stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.299452301030427x):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <algorithm>

#include <assert.h>

#define IOS ios::sync_with_stdio(false)

using namespace std;

#define inf (0x3f3f3f3f)

typedef long long int LL;





#include <iostream>

#include <sstream>

#include <vector>

#include <set>

#include <map>

#include <queue>

#include <string>

#include <bitset>

#include <list>

list<char>theList;

const int maxn = 1e5 + 20;

char str[maxn];

void work() {

    scanf("%s", str + 1);

    int lenstr = strlen(str + 1);

    for (int i = 1; i <= lenstr; ++i) {

        theList.push_back(str[i]);

    }

//    for (list<char> :: iterator it = theList.begin(); it != theList.end(); ++it) {

//        cout << *it;

//    }

    int ans = 0;

    while (theList.size() > 2) {

        if (theList.size() == 3 && theList.front() == theList.back()) break;

        list<char> :: iterator itBegin = theList.begin();

        itBegin++;

        list<char> :: iterator itEnd = theList.end();

        itEnd--;

        list<char> :: iterator itBeginPre = theList.begin();

        list<char> :: iterator itBeginNext = itBegin; itBeginNext++;

        bool flag = false;

        while (itBegin != itEnd) {

            if (*itBeginPre == *itBeginNext) {

                itBeginPre++;

                itBegin++;

                itBeginNext++;

            } else {

                theList.erase(itBegin);

                flag = true;

                break;

            }

        }

        if (!flag) break;

        ans++;

    }

//    cout << ans << endl;

    if (ans & 1) {

        cout << "First" << endl;

    } else cout << "Second" << endl;

}



int main() {

#ifdef local

    freopen("data.txt", "r", stdin);

//    freopen("data.txt", "w", stdout);

#endif

    work();

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3025006659851803x):
#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <algorithm>

#include <assert.h>

#define IOS ios::sync_with_stdio(false)

using namespace std;

#define inf (0x3f3f3f3f)

typedef long long int LL;





#include <iostream>

#include <sstream>

#include <vector>

#include <set>

#include <map>

#include <queue>

#include <string>

#include <bitset>

#include <list>

list<char>theList;

const int maxn = 1e5 + 20;

char str[maxn];

void work() {

    scanf("%s", str + 1);

    int lenstr = strlen(str + 1);

    lenstr -= 2;

    if (str[1] == str[strlen(str + 1)]) lenstr--;

    if (lenstr & 1) {

        cout << "First" << endl;

    } else cout << "Second" << endl;

}



int main() {

#ifdef local

    freopen("data.txt", "r", stdin);

//    freopen("data.txt", "w", stdout);

#endif

    work();

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3047594136637417x):
#include <cstdio>

#include <iostream>

#include <cstring>

#include <algorithm>

using namespace std;

const int maxn=1e5+10;

char str[maxn];

int main()

{

   cin>>str;

   int len=strlen(str);

   if (str[0]==str[len-1]){

       if (len&1){

         cout<<"Second\n";



       }

       else cout<<"First\n";



   }

   else {

      if (len&1){

         cout<<"First\n";

      }

      else cout<<"Second\n";

   }



   return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3171366410793304x):
#include <iostream>

#include <algorithm>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <stack>

#include <queue>

#include <vector>

#include <map>

#include <set>

using namespace std;

#define ll long long

char s[300005];



int main()

{

    scanf("%s",s);

    int l=strlen(s);

    int x=l-2;

    if(s[0]==s[l-1])

    {

        if(x%2==0) printf("First");

        else printf("Second");

    }

    else

    {

        if(x%2==1) printf("First");

        else printf("Second");

    }

    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3177505424316813x):
#include<bits/stdc++.h>

#define rep(i,j,k) for(int i=(j);i<(k);i++)

#define mp make_pair

#define sz(a) (int)(a).size()

#define pb push_back

using namespace std;

typedef long long ll;

typedef pair<int,int> pii;

typedef pair<double,double> pdd;

typedef long double ld;

//----head----

char str[100005];

int main()

{

	scanf("%s",str);

	int n=strlen(str);

	int ans=(str[0]==str[n-1]);

	ans^=(n%2);

	puts(ans?"First":"Second");

	return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.317768896854504x):
#include <iostream>

#include <cstdlib>

#include <algorithm>

#include <cstdio>

#include <cmath>

#include <cstring>



using namespace std;



char s[100005];



int main() {

    scanf("%s",s);

    int len=strlen(s);

    if ((len&1)!=(s[0]==s[len-1])) printf("First\n"); else printf("Second\n");



    return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

#include <stack>

#include <queue>

#include <map>

#include <set>

#include <string>

#include <cstring>

#define ll long long

#define rep(x,n) for(ll (x)=0;(x)<n;(x)++)

#define rep1(x,n) for(ll (x)=1;(x)<=n;(x)++)

using namespace std;



char s[300005],book[300005];



int main()

{

    #ifdef LOCAL

        freopen("B_data","r",stdin);

    #endif

    while(cin>>s)

    {

        ll len=strlen(s),cnt=0,l=0,r=2;

        memset(book,0,sizeof(book));

        rep(i,len)

        {

            if(!i || i==(len-1) || book[i]) continue;

            while(l && book[l]) l--;

            while(r<=i || (r<len && book[r])) r++;

            if(s[l]!=s[r])

            {

                cnt++,book[i]=1;

                //cout<<s[i];

                i-=2;

            }

        }

        //cout<<endl;

        if(cnt%2) cout<<"First"<<endl;

        else cout<<"Second"<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3168420760294108x):
#include <bits/stdc++.h>



using namespace std;

const int maxn=1e5+5;

char a[maxn];

int main()

{

    while(~scanf("%s", a))

    {

        int len=strlen(a);

        if(len&1)

        {

            if(a[0]==a[len-1])printf("Second\n");

            else printf("First\n");

        }

        else

        {

            if(a[0]==a[len-1])printf("First\n");

            else printf("Second\n");

        }

    }

    return 0;

}
// Slower C++ solution:
#include<iostream>

#include<cstring>

using namespace std;

int main()

{

   char m[100010];

   int a,b;

   while (cin>>m)

    {

       a=strlen(m);

       if (m[0]==m[a-1])

	   b=a-3;

       else 

	   b=a-2;

       if (b%2==1)

	   cout<<"First"<<endl;

       else 

	   cout<<"Second"<<endl;

    }

   return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.314661791002839x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include<iostream>

#include<algorithm> 

#include<string.h>

using namespace std;

int main()

{

	int b;

	string s;

	while(cin>>s)

	{

	int a=s.length();

	if(s[0]==s[a-1])

	b=a-3;

	else

	b=a-2;

	if(b%2)

	cout<<"First"<<endl;

	else

	cout<<"Second"<<endl;

	}

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.357659675622556x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:


#include<iostream>

#include<string.h>

using namespace std;

int main()

{

	string s;

	int t;

	cin>>s;

	t=s.size();

	if(s[0]==s[t-1])

	{

	if(t%2==0)

	cout<<"First"<<endl;

	if(t%2!=0)

	cout<<"Second"<<endl;

	}

	else 

	{

		if(t%2==0) 

		cout<<"Second"<<endl;

		else

		cout<<"First"<<endl;

		}

		return 0;

	}

// Faster C++ solution for the same problem (measured speedup: 5.3119879537695915x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstring>

using namespace std;

int main(){

  string s;

  cin>>s;

  if(s[0]==s[s.length()-1]){

    if(s.length()%2==0)

      cout<<"First"<<endl;

    else cout<<"Second"<<endl;

  }

  else {

    if(s.length()%2==0)

      cout<<"Second"<<endl;

    else cout<<"First"<<endl;

  }

  return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.311840217252325x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include<cstring> 

#include<iostream> 

using namespace std;

int main()

{

	int flag=0,count=0;

	char a[100005];

	cin>>a;

	(a[0]==a[strlen(a)-1])?(flag=1):0;

	count+=flag+strlen(a);

	cout<<((count&1)?"First":"Second");

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.299711687773831x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include <iostream>

#include <bits/stdc++.h>



using namespace std;



char c[100005];

int main()

{

    cin>>c;

    int len=strlen(c);

    if(c[0]==c[len-1])

        len++;

    if(len%2==0)

        cout<<"Second"<<endl;

    else

    cout << "First" << endl;

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.31506606814363x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include <algorithm>

#include <bitset>

#include <cstdio>

#include <cstring>

#include <iostream>

#include <map>

#include <queue>

#include <set>

#include <vector>

#define MP make_pair

#define ls (o << 1)

#define rs (o << 1 | 1)

#define mid ((L + R) >> 1)

#define eps (1e-5)

using namespace std;

typedef long long LL;

const LL mod = 1e9 + 7;

int n, m;

typedef pair<int, int> PII;

char s[100050];

int main() {

    scanf("%s", s);

    auto len = strlen(s);

    if (s[0] != s[len - 1] && len % 2 == 0) {

        puts("Second");

        return 0;

    }

    if (s[0] != s[len - 1] && len % 2 == 1) {

        puts("First");

        return 0;

    }

    printf("%s\n", len & 1 ? "Second" : "First");

    return 0;

}

//苏子曰：“客亦知夫（fú）水与月乎？逝者如斯[36]，而未尝往也；盈虚者如彼[37]，而卒[38]莫消长(zhǎng)也。盖将自其变者而观之，则天地曾（zēng）不能以一瞬；自其不变者而观之，则物与我皆无尽也，而又何羡乎！且夫（fú）天地之间，物各有主，苟（gǒu）非吾之所有，虽一毫而莫取。惟江上之清风，与山间之明月，耳得之而为声，目遇之而成色，取之无禁，用之不竭，是造物者之无尽藏[39]（zàng）也，而吾与子之所共适[40]。”

//客喜而笑，洗盏(zhǎn)更（gēng）酌[41]（zhuó）。肴（yáo）核既尽[42]，杯盘狼籍。相与枕藉[43]（jiè）乎舟中，不知东方之既白[44]

// Faster C++ solution for the same problem (measured speedup: 5.249967575457915x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main()

{

    char s[100010];

    int ans,len;

    scanf("%s",s);len=strlen(s);

    if (s[0]==s[len-1])

    {

        if (len & 1) ans=2;

        else ans=1;

    }

    else

    {

        if (len & 1) ans=1;

        else ans=2;

    }

    if (ans==1) cout<<"First"<<endl;

    else cout<<"Second"<<endl;

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.3226324738784765x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include <iostream>

#include <cstring>

#include <cstdio>

#include <string>

using namespace std;

string s;

int main(){

		//freopen("main.in","r",stdin);

		cin >> s;

		int len;

		if(s[0] == s[s.length()-1]) {

				len = s.length() - 3;

		}

		else{

				len = s.length() - 2;

		}

		if(len % 2){

			   	cout << "First" << endl;



		}else {

				cout << "Second" << endl;

		}

		return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.313823832920977x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

char s[100010];

int main(){

	scanf("%s",s);

	int len=strlen(s);

	int ans=(s[0]==s[len-1])^(len%2);

	if(!ans)cout<<"Second"<<endl;

	else cout<<"First"<<endl;

}




// Faster C++ solution for the same problem (measured speedup: 5.274036874862506x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

string s;

int main(){

	cin >> s;

	if(s[0] == s[s.length() - 1]){

		if(s.length() % 2)

			cout << "Second" << endl;

		else

			cout << "First" << endl;

	}else{

		if(s.length() % 2)

			cout << "First" << endl;

		else

			cout << "Second" << endl;

	}

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.315151940442739x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;



char st[100010];



int main() {

	scanf("%s", st);

	int l = strlen(st);

	if (st[0] == st[l-1]) {

		if (l % 2 == 1) {

			puts("Second");

		} else {

			puts("First");

		}

	} else {

		if (l % 2 == 1) {

			puts("First");

		} else {

			puts("Second");

		}

	}

}

// Faster C++ solution for the same problem (measured speedup: 5.24989725890283x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;



char s[100010];



int main(){

    scanf("%s",s);

    int len = strlen(s);

    if(s[0] == s[len-1]) len--;

    if(len & 1) printf("First");

    else printf("Second");



    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.250798286629508x):
#include <cstdio>

#include <cstring>

#include <algorithm>



using namespace std;



char st[104014];



int main(){

  while(~scanf("%s", st)){

    int len = strlen(st);

    if(st[0] != st[len-1]){

      if(len & 1) printf("First\n");

      else printf("Second\n");

    }

    else {

      if(len & 1) printf("Second\n");

      else printf("First\n");

    }

  }

  return 0;

}