stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int l,sum=0;

const int maxn=1e5+10;

char t[maxn];

int main()

{

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

	{

	   l=strlen(t);

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

		  if(t[i-1]!=t[i+1]) sum++;

	   if(sum==0)

	   {

		printf("Second\n");

		continue;

	    }

	   if(t[0]!=t[l-1])

	   {

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

       }

       else

	   {

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

	   }

	}

	

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.294235656177785x):
#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");

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

using namespace std;

char s[1000001];

long long a=0,b=0;

int main()

{

    cin>>s;

    a=strlen(s)-2;

    for (int i=0,j=strlen(s)-1;i<j;i++,j--)

    {

        if (s[i]==s[j])

        b++;

    }

    if (b==(a+2)/2)

    cout<<"Second"<<endl;

    else

    {

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

    {

        a=a-1;

        if (a%2==0)

        cout<<"Second"<<endl;

        else

        cout<<"First"<<endl;

    }

    else

    {

    if (a%2==0)

    cout<<"Second"<<endl;

    else

    cout<<"First"<<endl;	

    }

    }

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.347095461620397x):
#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");

}
// Slower C++ solution:
#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";

    }

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

}
// Slower C++ solution:
#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;

}


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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

}
// Slower C++ solution:
#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;

	}

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

using namespace std;

int l,sum=0;

const int maxn=1e5+10;

char t[maxn];

int main()

{

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

	{

	   l=strlen(t);

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

		  if(t[i-1]!=t[i+1]) sum++;

	   if(sum==0)

	   {

		printf("Second\n");

		continue;

	    }

	   if(t[0]!=t[l-1])

	   {

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

       }

       else

	   {

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

	   }

	}

	

	return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

using namespace std;

char s[1000001];

long long a=0,b=0;

int main()

{

    cin>>s;

    a=strlen(s)-2;

    for (int i=0,j=strlen(s)-1;i<j;i++,j--)

    {

        if (s[i]==s[j])

        b++;

    }

    if (b==(a+2)/2)

    cout<<"Second"<<endl;

    else

    {

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

    {

        a=a-1;

        if (a%2==0)

        cout<<"Second"<<endl;

        else

        cout<<"First"<<endl;

    }

    else

    {

    if (a%2==0)

    cout<<"Second"<<endl;

    else

    cout<<"First"<<endl;	

    }

    }

    return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

#include<cstring>

using namespace std;

int main()

{

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

	string s;

	cin>>s;

	int len=s.length();

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

	{

		if(len&1) cout<<"First"<<endl;

		else cout<<"Second"<<endl;

	}

	else

	{

		if(len&1) cout<<"Second"<<endl;

		else cout<<"First"<<endl;

	}

	return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

#include<iomanip>

#include<cstring>

#include<cstdio>

#include<cmath>

#include<algorithm>

#include<set>

using namespace std;

string s;

int main() {

    cin>>s;

    int n=s.length();

    s=' '+s;

    if(s[1]==s[n]){

    	if(n%2==1)puts("Second");

    	else puts("First");

	}

	else {

		if(n%2==0)puts("Second");

    	else puts("First");

	}

    return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

using namespace std;

string s;

int main()

{

	cin>>s;

	int l=s.length();

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

	{

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

		else cout<<"Second"<<endl;

	}

	else

	{

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

		else cout<<"First"<<endl;

	}

	return 0;

} 

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

using namespace std;

string s;

int main()

{

	cin>>s;

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

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

			cout<<"First"<<endl;

		}

		else{

			cout<<"Second"<<endl;

		}

	}

	else{

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

			cout<<"First"<<endl;

		}

		else{

			cout<<"Second"<<endl;

		}

	}

	return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

#include <string.h>

#include <stdlib.h>

#include <iostream>

#include <algorithm>

#include <set>

#include <queue>

using namespace std;

char s[100005];

int main(){

	int n,i,j,k,o,p,l;

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

	n=strlen(s+1);

	int ok=1;

	for(i=3;i<=n;i++)

	if(s[i]!=s[i-2]){ok=0;break;}

	if(ok==1)printf("Second");

	else{

	if(s[1]==s[n]){

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

	else printf("Second");

	}

	else{

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

	else printf("Second");

	}

	}

	return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

using namespace std;

string s;

int main(){

    cin>>s;int l=s.size();

    if(s[0]==s[l-1]) if(l&1) puts("Second");else puts("First");

    else if(!(l&1)) puts("Second");else puts("First");

    return 0;

}

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

#include<cstring>

#include<queue>

#include<cmath>

using namespace std;

char s[100001];

int main()

{

    scanf("%s",s);

    int len=strlen(s);

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

    {

        if(len%2==1)

    printf("Second");

        else

    printf("First");

    }

    else

    {

        if(len%2==1)

    printf("First");

        else

    printf("Second");

    }

    return 0;

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

#include <cstdio>

#include <cstring>

#include <cmath>

#include <algorithm>

#include <map>



using namespace std;



char str[110000];



int main()

{

	cin>>str;

	int flag = 1;

	int len;

	len = strlen(str);

	for(int i = 0;i < len - 2;i++)

	{

		if(str[i] != str[i+2])

		{

			flag = 0;

			break;

		}

	}

	if(flag)

		cout<<"Second"<<endl;

	else if(str[0] == str[len-1] && len % 2)

		cout<<"Second"<<endl;

	else if(len % 2)

		cout<<"First"<<endl;

	else if(str[0] == str[len-1] && len % 2 == 0)

		cout<<"First"<<endl;

	else

		cout<<"Second"<<endl;

	return 0;

}

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

#include <stdio.h>

#include <stdlib.h>

using namespace std;

char ch[555555];

int main()

{

    scanf("%s",ch);

    int len=strlen(ch);

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

    {

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

        {

            printf("First\n");

        }

        else

        {

            printf("Second\n");

        }

    }

    else

    {

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

        {

            printf("Second\n");

        }

        else

        {

            printf("First\n");

        }

    }

    return 0;

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



using namespace std;



int main () {

    char str[100005];

    scanf("%s", str);

    int len=strlen(str);

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

        if(len&1) puts("Second");

        else puts("First");

    } else {

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

        else puts("Second");

    }

    return 0;

}


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

#include <stdio.h>

#include <stdlib.h>

using namespace std;

char ch[555555];

int main()

{

    scanf("%s",ch);

    int len=strlen(ch);

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

    {

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

        {

            printf("First\n");

        }

        else

        {

            printf("Second\n");

        }

    }

    else

    {

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

        {

            printf("Second\n");

        }

        else

        {

            printf("First\n");

        }

    }

    return 0;

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

#include <cstdio>

#include <cstring>

#include <algorithm>

#define ms(x) memset(x, 0, sizeof(x))

#define inf 0x3f3f3f3f

using namespace std;

int main()

{

    char s[123456];

    int cnt[27], book[27];

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

        ms(cnt);

        int len = strlen(s), s1 = 0, s2 = 0;

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

        if(len%=2) {printf("First\n");}

        else printf("Second\n");

    }

    return 0;

}


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

#include <stdio.h>

#include <stdlib.h>

using namespace std;

char ch[555555];

int main()

{

    scanf("%s",ch);

    int len=strlen(ch);

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

    {

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

        {

            printf("First\n");

        }

        else

        {

            printf("Second\n");

        }

    }

    else

    {

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

        {

            printf("Second\n");

        }

        else

        {

            printf("First\n");

        }

    }

    return 0;

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

#include <cstdio>

#include <cstring>

#include <cmath>

#include <algorithm>

#include <map>



using namespace std;



char str[110000];



int main()

{

	cin>>str;

	int flag = 1;

	int len;

	len = strlen(str);

	for(int i = 0;i < len - 2;i++)

	{

		if(str[i] != str[i+2])

		{

			flag = 0;

			break;

		}

	}

	if(flag)

		cout<<"Second"<<endl;

	else if(str[0] == str[len-1] && len % 2)

		cout<<"Second"<<endl;

	else if(len % 2)

		cout<<"First"<<endl;

	else if(str[0] == str[len-1] && len % 2 == 0)

		cout<<"First"<<endl;

	else

		cout<<"Second"<<endl;

	return 0;

}

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

#include <string.h>

#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

char s[N];



int main()

{

	scanf("%s",s);

	int len = strlen(s);

	int cnt = len - 2;

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

	{

		if (cnt % 2) puts("Second");

		else puts("First");

	}

	else

	{

		if (cnt % 2 == 0) puts("Second");

		else puts("First");

	}

	return 0;

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



using namespace std;



int main () {

    char str[100005];

    scanf("%s", str);

    int len=strlen(str);

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

        if(len&1) puts("Second");

        else puts("First");

    } else {

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

        else puts("Second");

    }

    return 0;

}


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

#include <string.h>

#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

char s[N];



int main()

{

	scanf("%s",s);

	int len = strlen(s);

	int cnt = len - 2;

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

	{

		if (cnt % 2) puts("Second");

		else puts("First");

	}

	else

	{

		if (cnt % 2 == 0) puts("Second");

		else puts("First");

	}

	return 0;

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

#include <cstdio>

#include <cstring>

#include <algorithm>

#define ms(x) memset(x, 0, sizeof(x))

#define inf 0x3f3f3f3f

using namespace std;

int main()

{

    char s[123456];

    int cnt[27], book[27];

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

        ms(cnt);

        int len = strlen(s), s1 = 0, s2 = 0;

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

        if(len%=2) {printf("First\n");}

        else printf("Second\n");

    }

    return 0;

}


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

#include <string.h>

#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

char s[N];



int main()

{

	scanf("%s",s);

	int len = strlen(s);

	int cnt = len - 2;

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

	{

		if (cnt % 2) puts("Second");

		else puts("First");

	}

	else

	{

		if (cnt % 2 == 0) puts("Second");

		else puts("First");

	}

	return 0;

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

using namespace std;

 

int main()

{

    string s;

    cin>>s;

    int len = s.length();

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

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

        else printf("First\n");

    else

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

        else printf("Second\n");

}

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

#include <string.h>

#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

char s[N];



int main()

{

	scanf("%s",s);

	int len = strlen(s);

	int cnt = len - 2;

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

	{

		if (cnt % 2) puts("Second");

		else puts("First");

	}

	else

	{

		if (cnt % 2 == 0) puts("Second");

		else puts("First");

	}

	return 0;

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

#include <cstdio>

#include <cstring>

#include <cmath>

#include <algorithm>

#include <map>



using namespace std;



char str[110000];



int main()

{

	cin>>str;

	int flag = 1;

	int len;

	len = strlen(str);

	for(int i = 0;i < len - 2;i++)

	{

		if(str[i] != str[i+2])

		{

			flag = 0;

			break;

		}

	}

	if(flag)

		cout<<"Second"<<endl;

	else if(str[0] == str[len-1] && len % 2)

		cout<<"Second"<<endl;

	else if(len % 2)

		cout<<"First"<<endl;

	else if(str[0] == str[len-1] && len % 2 == 0)

		cout<<"First"<<endl;

	else

		cout<<"Second"<<endl;

	return 0;

}

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

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

 	scanf("%s",&s);

 	long long len=strlen(s);

 	for(long long i=0;i<len-1;i++)

	 {

 	 	if(s[i]!=s[i+1])

		bo=1;

	}

	if(bo==1)

	{

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

 		ji=len-2;

 		else ji=len-3;

	}

	else ji=0;

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

 	else printf("Second");

			return 0;

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



using namespace std;



int main () {

    char str[100005];

    scanf("%s", str);

    int len=strlen(str);

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

        if(len&1) puts("Second");

        else puts("First");

    } else {

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

        else puts("Second");

    }

    return 0;

}


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

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

 	scanf("%s",&s);

 	long long len=strlen(s);

 	for(long long i=0;i<len-1;i++)

	 {

 	 	if(s[i]!=s[i+1])

		bo=1;

	}

	if(bo==1)

	{

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

 		ji=len-2;

 		else ji=len-3;

	}

	else ji=0;

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

 	else printf("Second");

			return 0;

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

#include <cstdio>

#include <cstring>

#include <algorithm>

#define ms(x) memset(x, 0, sizeof(x))

#define inf 0x3f3f3f3f

using namespace std;

int main()

{

    char s[123456];

    int cnt[27], book[27];

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

        ms(cnt);

        int len = strlen(s), s1 = 0, s2 = 0;

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

        if(len%=2) {printf("First\n");}

        else printf("Second\n");

    }

    return 0;

}


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

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

 	scanf("%s",&s);

 	long long len=strlen(s);

 	for(long long i=0;i<len-1;i++)

	 {

 	 	if(s[i]!=s[i+1])

		bo=1;

	}

	if(bo==1)

	{

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

 		ji=len-2;

 		else ji=len-3;

	}

	else ji=0;

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

 	else printf("Second");

			return 0;

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

using namespace std;

 

int main()

{

    string s;

    cin>>s;

    int len = s.length();

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

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

        else printf("First\n");

    else

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

        else printf("Second\n");

}

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

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

 	scanf("%s",&s);

 	long long len=strlen(s);

 	for(long long i=0;i<len-1;i++)

	 {

 	 	if(s[i]!=s[i+1])

		bo=1;

	}

	if(bo==1)

	{

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

 		ji=len-2;

 		else ji=len-3;

	}

	else ji=0;

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

 	else printf("Second");

			return 0;

}
// Slower C++ solution:
#include<iostream>//打表做法，危险动作，请勿效仿 

#include<cstdio>

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

	scanf("%s",&s);

	long long len=strlen(s);

	for(long long i=0;i<len-1;i++){

		if(s[i]!=s[i+1])bo=1;

	}

	if(bo=1){

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

			ji=len-2;

		else ji=len-3;

	}

	else ji=0;

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

	else cout<<"Second";

}

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

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

 	scanf("%s",&s);

 	long long len=strlen(s);

 	for(long long i=0;i<len-1;i++)

	 {

 	 	if(s[i]!=s[i+1])

		bo=1;

	}

	if(bo==1)

	{

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

 		ji=len-2;

 		else ji=len-3;

	}

	else ji=0;

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

 	else printf("Second");

			return 0;

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

using namespace std;

char s[1000001];

long long a=0,b=0;

int main()

{

	cin>>s;

	a=strlen(s);

	for (int i=0,j=strlen(s)-1;i<j;i++,j--)

	{

		if (s[i]==s[j])

		b++;

	}

	if (b==(a+2)/2)

	cout<<"Second";

	else

	{

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

	{

		a=a-1;

		if (a%2==0)

		cout<<"Second";

		else

		cout<<"First";

	}

	else

	{

	if (a%2==0)

	cout<<"Second";

	else

	cout<<"First";	

	}

	}

	return 0;

}

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

#include<cstring>

using namespace std;

char s[1000005];

bool bo;

long long ji;

int main(){

 	scanf("%s",&s);

 	long long len=strlen(s);

 	for(long long i=0;i<len-1;i++)

	 {

 	 	if(s[i]!=s[i+1])

		bo=1;

	}

	if(bo==1)

	{

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

 		ji=len-2;

 		else ji=len-3;

	}

	else ji=0;

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

 	else printf("Second");

			return 0;

}