stablegradients/pie-gem5-bysrc huggingface dataset:
// Original C++ solution (slower):
#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;

}


// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#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;

}


// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#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;

}




// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#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;

}


// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

#include <math.h>

#include <bits/stdc++.h>

#define ll long long

#define inf 0x3f3f3f3f

#define maxn 310000

using namespace std;

int vis[maxn];

char s[111111];

int main()

{

    int i,j,n,jj=0,sum=0,k,flag;

    cin>>s;

    n=strlen(s);

    if(n%2==0)

    {

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

            printf("First\n");

        else printf("Second\n");

    }

    if(n%2!=0)

    {

        if(s[0]!=s[n-1]) 

            printf("First\n");

        else printf("Second\n");

    }

    return 0;

}


// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
/*QAQ三连：以前的题都补了吗，今天的题都做了吗，不会的算法都会了吗*/

/*金桔退役三连：退役选手不学不会不练*/

#include <bits/stdc++.h>

#define LDQ 1000000007

#define QAQ 0x3f3f3f3f

#define PI 3.14159265358979323846

using namespace std;

int main()

{

    int i;

    char s[100001];

    scanf("%s",s);

    if(strlen(s)%2==0)

    {

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

        {

            printf("First");

        }

        else

        {

            printf("Second");

        }

    }

    else

    {

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

        {

            printf("Second");

        }

        else

        {

            printf("First");

        }

    }

    return 0;

}


// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main(){

    string s;

    cin >> s;

    if(s[0] == s[s.size() - 1])

        cout << (s.size() & 1 ? "Second" : "First");

    else

        cout << (s.size() & 1 ? "First" : "Second");

    return 0;

}

// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int s1,s2,a;

char c[100010],c1,c2;

int main(){

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

	a=strlen(c+1);

	c1=c[1],c2=c[a];

	if((c1==c2&&a%2==0)||c1!=c2&&a%2!=0) cout<<"First";

	else cout<<"Second"; 

	return 0;

}

// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <iostream>

using namespace std;



int main(){

	string s;

	cin >> s;

	int ans = s.size()-2;

	

	if(s[0]==s[s.size()-1]) ans-=1;

	if(ans&1) cout << "First";	//长度为奇数

	else cout << "Second"; 

}

// Optimized solution to the same problem (faster):
#include<cstdio>

const int N=100001;

int main() {

    int n=3;

    char s[N];

    scanf("%s",s);

    while(s[n])n++;

    printf((s[0]==s[n-1] ^ n&1)?"First":"Second");

    return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

#define LL long long

using namespace std;

const int maxn=1e5+10;

int n;

char a[maxn];

int main()

{

    while(scanf("%s",a)!=EOF)

    {

        int ans=0;

        int len=strlen(a);

        for(int i=1; i<len-1; i++)

            if(a[i-1]!=a[i+1])ans++;

        if(ans==0)

        {

            printf("Second\n");

            continue;

        }

        if(a[0]!=a[len-1])printf("%s\n",len%2?"First":"Second");

        else printf("%s\n",len%2?"Second":"First");

    }

}




// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

#include<cstring>

using namespace std;

int main()

{

    char s[100000];

    cin>>s;

    long long t=strlen(s);

    if(s[0]==s[strlen(s)-1]){

    	if(t%2==1) cout<<"Second"<<endl;

    	else cout<<"First"<<endl;

	}

	else{

		if(t%2==0) cout<<"Second"<<endl;

    	else cout<<"First"<<endl;

	}

    return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

char a[100001]; 

int main()

{

	scanf("%s",a);

	int lena=strlen(a);

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

	{

		if((lena-2)%2==1)

			printf("Second");

		if((lena-2)%2==0)

			printf("First");

	}

	else{

		if((lena-2)%2==1)

			printf("First");

		if((lena-2)%2==0)

			printf("Second");

	}

} 

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
/*         _    _____         _

           \`,""   ,'7"r-..__/ \

          ,'\ `, ,',','    _/   \

         /   \  7 / /     (   \ |

        J     \/ j  L______\  / |

        L   __JF"""/""\"\_,    /

        L,-"| O|  f O |  L_  _/

        F   \_ /  \__/   `-  j|

            .-'    `"""    ,' |          _..====.._

            \__/         r"_  A        ,' _..---.._`,

             `-.______,,-L// / \  ___,' ,'_..:::.. `,`,

                      j   / / / 7"    `-<""=:'  '':. \ \

                     /   <,' /  F  . i , \   `,    :T W I

                     |    \,'  /    >X<  |     \   :| | L

                     |     `._/    ' ! ` |      I  :| |  G

                      \           \     /       |  :H T  |

                     __>-.__   __,-\   |        |  S P   |

                    /     /|   | \  \  \_       | 'A R   |

                   /   __/ |   |  L  L   \      K./ /    L

                  /   |    |   4  I  I    |    E./ /   ,'

                 J    \    I    L F  I    |    // / _,'

        _________|     |   F    |J   F    |   //_/-'

        \   __   |    /   J     |/  J     |  /="

        \\  \_\  \__,' \  F     |   F     |

        \\\_____________\/      F__/      F

         \\| ¼ÆËã»ú±à³Ì |_____/  (______/

          \/´ÓÈëÃÅµ½ÈëÍÁ/

*/

#include<cstdio>

#include<iostream>

#include<algorithm>

#include<cstring>

#include<string> 

using namespace std;

int main(){

	string s;

	cin>>s;

	int len=s.length();

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

		if(len%2==1){

			cout<<"Second";

			return 0;

		}

		else{

			cout<<"First";

			return 0;

		}

	}

	else{

		if(len%2==1){

			cout<<"First";

			return 0;

		}

		else{

			cout<<"Second";

			return 0;

		}

	}

	return 0;

}


// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

char a[100005];

int main()

{

	scanf("%s",&a);

	if(a[0]==a[strlen(a)-1]){

		if(strlen(a)%2!=0){

			printf("Second\n");

		}

		else{

			printf("First\n");

		}

	}

	else{

		if(strlen(a)%2!=0){

			printf("First\n");

		}

		else{

			printf("Second\n");

		}

	}

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

string s;



int main()

{

    cin >> s;

    int len = s.length();

    if(len & 1)

    {

        if(s[0] == s[len - 1]) cout << "Second";

        else cout << "First";

    }

    else

    {

        if(s[0] ^ s[len - 1]) cout << "Second";

        else cout << "First";

    }

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

string a;

int main()

{

	cin>>a;

	int l=a.size();

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

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

		else printf("First\n");

	else 

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

		else printf("Second\n");

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100003];

int main()

{

    scanf("%s",s);

    int l=strlen(s);

    if((s[0]==s[l-1])!=(l%2==0)) puts("Second");

	else puts("First");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main() {

	string s;

	cin>>s;

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

		if(s.size()%2==0) {

			cout<<"First"<<endl;

		} else {

			cout<<"Second"<<endl;

		}

	}

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

		if(s.size()%2==1) {

			cout<<"First"<<endl;

		} else {

			cout<<"Second"<<endl;

		}

	}

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

int Len;

char s[ 100005 ];

int main() {

	scanf ("%s", s);

	Len = strlen(s);

	printf ("%s\n", ((Len % 2 == 1) ^ (s[ 0 ] == s[ Len - 1 ])) ? "First" : "Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

#include<cstdio>

#include<cstring>



using namespace std;



char s[100000+5];



int main()

{

	scanf("%s",s+1);int len=strlen(s+1);

	if(s[1]==s[len] && len%2==1) puts("Second");

	else if(s[1]==s[len] && len%2==0)  puts("First");

	else if(s[1]!=s[len] && len%2==1) puts("First");

	else if(s[1]!=s[len] && len%2==0)puts("Second");

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

int Len;

char s[ 100005 ];

int main() {

	scanf ("%s", s);

	Len = strlen(s);

	printf ("%s\n", ((Len % 2 == 1) ^ (s[ 0 ] == s[ Len - 1 ])) ? "First" : "Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main()

{

  string a;

  cin>>a;

  int k=a.length();

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

  {

    if(k%2==0)

	{

      cout<<"First"<<endl;

      return 0;

    }

    else

	{

      cout<<"Second"<<endl;

      return 0;

    }

  }

  else

  {

    if(k%2==0)

	{

      cout<<"Second"<<endl;

      return 0;

    }

    else

	{

      cout<<"First"<<endl;

      return 0;

    }

  }

  return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

int Len;

char s[ 100005 ];

int main() {

	scanf ("%s", s);

	Len = strlen(s);

	printf ("%s\n", ((Len % 2 == 1) ^ (s[ 0 ] == s[ Len - 1 ])) ? "First" : "Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

 

int main()

{

    string s;

    while(cin>>s)

    {

        cout << ( (s[0]==s[s.length()-1])^(s.length()%2)?"First":"Second") << endl;

    }

    return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

char s[100005];

inline int getstring(char *_s){

	int l=0;

	for(char ch=getchar();ch!='\n';ch=getchar(),l++)

		_s[l]=ch;

	return l;

}

int main(){

	int l=getstring(s);

	printf("%s",(s[0]==s[l-1])^(l%2)?"First":"Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<string>

#include<iostream>

using namespace std;

string s;

int main(){

	cin>>s;

	if(s[0]==s[s.size()-1])

	  if(s.size()%2==1) cout<<"Second";

	  else cout<<"First";

	else

	  if(s.size()%2==1) cout<<"First";

	  else cout<<"Second";

}

// Optimized solution to the same problem (faster):
#include <cstdio>

char s[100005];

inline int getstring(char *_s){

	int l=0;

	for(char ch=getchar();ch!='\n';ch=getchar(),l++)

		_s[l]=ch;

	return l;

}

int main(){

	int l=getstring(s);

	printf("%s",(s[0]==s[l-1])^(l%2)?"First":"Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int s1,s2,a;

char c[100010],c1,c2;

int main(){

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

	a=strlen(c+1);

	c1=c[1],c2=c[a];

	if((c1==c2&&a%2==0)||c1!=c2&&a%2!=0) cout<<"First";

	else cout<<"Second"; 

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

char s[100005];

inline int getstring(char *_s){

	int l=0;

	for(char ch=getchar();ch!='\n';ch=getchar(),l++)

		_s[l]=ch;

	return l;

}

int main(){

	int l=getstring(s);

	printf("%s",(s[0]==s[l-1])^(l%2)?"First":"Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main(){

	string d;

	cin>>d;

	int tot=0;

	int g=0;

	int l=d.size();

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

	{

		if(l%2==0)

		cout<<"First";

		else cout<<"Second";

	}

	else{

		if(l%2==1)cout<<"First";

		else cout<<"Second";

	}

	return 0;

}

// Optimized solution to the same problem (faster):
#include <cstdio>

char s[100005];

inline int getstring(char *_s){

	int l=0;

	for(char ch=getchar();ch!='\n';ch=getchar(),l++)

		_s[l]=ch;

	return l;

}

int main(){

	int l=getstring(s);

	printf("%s",(s[0]==s[l-1])^(l%2)?"First":"Second");

	return 0;

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<cstdio>

#include<string>

#include<iostream>

#include<algorithm>

#include<cmath>

#include<vector>

#define inf 99999999

using namespace std;

typedef double db;

typedef long long ll;

string s;

int main()

{

	cin>>s;

	if(s[0]==s[s.size()-1])

		if(s.size()&1)

			cout<<"Second"<<endl;

		else

			cout<<"First"<<endl; 

	else

		if(s.size()&1)

			cout<<"First"<<endl;

		else

			cout<<"Second"<<endl;

	return 0;

}




// Optimized solution to the same problem (faster):
#include<algorithm>

#include<cstring>

#include<stdio.h>

using namespace std;

int main(){

	int n;

	char a[100005];

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

	n=strlen(a+1);

	if((a[1]==a[n]&&n%2==1)||(a[1]!=a[n]&&n%2!=1))printf("Second\n");

	else printf("First\n");

	return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

#include<string>

using namespace std;

int main()

{

    string s;

    cin>>s;

    int l=s.length();

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

	{

        if(l%2==0)

		{

            cout<<"First";

            return 0;

        }

        else

		{

            cout<<"Second";

            return 0;

        }

    }

    else{

        if(l%2==0)

		{

            cout<<"Second";

            return 0;

        }

        else

		{

            cout<<"First";

            return 0;

        }

    }

}

// Optimized solution to the same problem (faster):
#include<algorithm>

#include<cstring>

#include<stdio.h>

using namespace std;

int main(){

	int n;

	char a[100005];

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

	n=strlen(a+1);

	if((a[1]==a[n]&&n%2==1)||(a[1]!=a[n]&&n%2!=1))printf("Second\n");

	else printf("First\n");

	return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

string a;

int b;

int main()

{

cin>>a;

b=a.size();

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

{

if(b%2==0)

{

cout<<"First"<<endl;

return 0;

}

else

{

cout<<"Second"<<endl;

return 0;

}

}

else

{

if(b%2==0){

cout<<"Second"<<endl;

return 0;

}

else

{

cout<<"First"<<endl;

return 0;

}

}

}

// Optimized solution to the same problem (faster):
#include<algorithm>

#include<cstring>

#include<stdio.h>

using namespace std;

int main(){

	int n;

	char a[100005];

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

	n=strlen(a+1);

	if((a[1]==a[n]&&n%2==1)||(a[1]!=a[n]&&n%2!=1))printf("Second\n");

	else printf("First\n");

	return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

int main()

{

    string s;

    cin>>s;

    return 0&(int)printf("%s",((s[0]==s[s.length()-1])^(s.length()%2))?"First":"Second");

}

// Optimized solution to the same problem (faster):
#include<algorithm>

#include<cstring>

#include<stdio.h>

using namespace std;

int main(){

	int n;

	char a[100005];

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

	n=strlen(a+1);

	if((a[1]==a[n]&&n%2==1)||(a[1]!=a[n]&&n%2!=1))printf("Second\n");

	else printf("First\n");

	return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include "cstdio"

#include "string"

#include "iostream"

using namespace std;

int main(){

	string s;

	cin>>s;

	int x=s.size();

	if(s[0]==s[x-1]){

	if(x%2==0){

		printf("First\n");return 0;

	}

	else{

		printf("Second\n");return 0;

	}

	}

	else{

		if(x%2==0){

		    printf("Second\n");return 0;

	    }

	    else {

		    printf("First\n");return 0;

	    }

	}

}

// Optimized solution to the same problem (faster):
#include<algorithm>

#include<cstring>

#include<stdio.h>

using namespace std;

int main(){

	int n;

	char a[100005];

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

	n=strlen(a+1);

	if((a[1]==a[n]&&n%2==1)||(a[1]!=a[n]&&n%2!=1))printf("Second\n");

	else printf("First\n");

	return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <iostream>

#include <cstring>



using namespace std;



string s;



int main()

{

	cin >> s;

	if (s[0] == s[s.length() - 1] && s.length() % 2) cout << "Second" << endl;

	else if (s[0] == s[s.length() - 1] || s.length() % 2) cout << "First" << endl;

	else cout << "Second" << endl;

	return 0;

}

// Optimized solution to the same problem (faster):
#include<algorithm>

#include<cstring>

#include<stdio.h>

using namespace std;

int main(){

	int n;

	char a[100005];

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

	n=strlen(a+1);

	if((a[1]==a[n]&&n%2==1)||(a[1]!=a[n]&&n%2!=1))printf("Second\n");

	else printf("First\n");

	return 0;

}


// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;

int main()

{

    string s;

    cin>>s;

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

    {

        if(s.length()%2==1) cout <<"Second\n";

        else cout <<"First\n";

    }

    else

    {

        if(s.length()%2==0) cout <<"Second\n";

        else cout <<"First\n";

    }

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100005];

int len;

int main(){

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

    if (s[0] == s[len - 1]) puts(len & 1 ? "Second" : "First");

    else puts(len & 1 ? "First" : "Second");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include <bits/stdc++.h>

#define LL long long

using namespace std;



const int N=1e5+10;

int len,Cnt;

char a[N];



int main ()

{

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

	len=strlen (a+1);

	for (int i=1;i<=len>>1;++i)

		if (a[i]!=a[len-i+1]) Cnt++;

	if (Cnt==0) {

		puts ("Second");

		return 0;

	}	

	a[1]==a[len]? (len & 1?puts ("Second") : puts ("First") ) : (len & 1?puts ("First") : puts ("Second") );

	return 0;

}


// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100005];

int len;

int main(){

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

    if (s[0] == s[len - 1]) puts(len & 1 ? "Second" : "First");

    else puts(len & 1 ? "First" : "Second");

}

// Fastest known solution for this problem:
// Original C++ solution (slower):
#include<iostream>

#include<cstring>

using namespace std;

string s;

int l;

int main()

{

	cin>>s;

	l=s.size();

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

	{

		if(l%2==0) cout<<"First";

		else cout<<"Second";

		return 0;

	}

	else

	{

		if(l%2==0) cout<<"Second";

		else cout<<"First";

		return 0;

	}

}

// Optimized solution to the same problem (faster):
#include <cstdio>

#include <cstring>

char s[100005];

int len;

int main(){

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

    if (s[0] == s[len - 1]) puts(len & 1 ? "Second" : "First");

    else puts(len & 1 ? "First" : "Second");

}

// Fastest known solution for this problem: