'''Author- Akshit Monga'''
def ceil(a,b):
    return (a+b-1)//b
t=int(input())
for _ in range(t):
    n=int(input())
    x=ceil(n,4)
    s=''
    for i in range(n-x):
        s+='9'
    for i in range(x):
        s+='8'
    print(s)


'''Author- Akshit Monga'''
from sys import stdin,stdout
input=stdin.readline
def ceil(a,b):
    return (a+b-1)//b
t=int(input())
for _ in range(t):
    n=int(input())
    x=ceil(n,4)
    stdout.write('9'*(n-x) +'8'*x +'\n')


'''Author- Akshit Monga'''
from sys import stdin,stdout
input=stdin.readline
def ceil(a,b):
    return (a+b-1)//b
t=int(input())
for _ in range(t):
    n=int(input())
    x=ceil(n,4)
    s=''
    for i in range(n-x):
        s+='9'
    for i in range(x):
        s+='8'
    stdout.write(s+'\n')


for _ in range(int(input())):
    z = int(input())
    n = int('9'*z)
    print(n-1)


from math import *
for _ in range(int(input())):
    n = int(input())
    if(n==1):
        print('8')
    elif(n==2):
        print('98')
    else:
        k = (n+3)//4
        print('9'*(n-k)+'8'*(k))


from math import *
for _ in range(int(input())):
    n = int(input())
    if(n==1):
        print('8')
    elif(n==2):
        print('98')
    else:
        k = int(log2(n-1))
        print('9'*(n-k)+'8'*(k))


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        while(True):
            next_num = str(int(init_num)-1)
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-n]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-n]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        itor=1
        while(True):
            next_num = str(int(init_num)-int(dtob(str(itor))))
            itir+=1
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-n]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-n]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        while(True):
            next_num = str(int(init_num)-1)
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-3]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-3]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        while(True):
            next_num = str(int(init_num)-1)
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-3]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-3]
            if banum>bbnum:
                ans=init_num
                break
            elif banum<=bbnum:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        vox = '9'*n
        init_num = '9'*n
        itor=1
        while(True):
            next_num = str(int(vox)-int(dtob(str(itor))))
            itor+=1
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-n]
            for i in next_num:
                bbnum += str(dtob(i))
            bbnum = bbnum[:-n]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        while(True):
            next_num = str(int(init_num)-1)
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-3]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-3]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            elif int(banum)<=int(bbnum):
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def main():
    for i in range(int(input())):
        n = int(input())
        k = n//4
        if n%4!=0:
            k+=1
        number = '9'*(n-k)
        number += '8'*k
        print(number)
if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        itor=1
        while(True):
            next_num = str(int(init_num)-int(dtob(str(itor))))
            itor+=1
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-n]
            for i in next_num:
                bbnum += str(dtob(i))
            bbnum = bbnum[:-n]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='01'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        while(True):
            next_num = str(int(init_num)-1)
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-3]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-3]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


def dtob(a):
    v=0
    if a=='0':
        v='0'
    elif a=='1':
        v='1'
    elif a == '2':
        v = '10'
    elif a == '3':
        v = '11'
    elif a == '4':
        v = '100'
    elif a == '5':
        v = '101'
    elif a == '6':
        v = '110'
    elif a == '7':
        v = '111'
    elif a == '8':
        v = '1000'
    elif a == '9':
        v = '1001'
    return v

def main():
    for i in range(int(input())):
        n = int(input())
        ans=0
        banum = ''
        bbnum = ''
        init_num = '9'*n
        while(True):
            next_num = str(int(init_num)-1)
            for i in init_num:
                banum += dtob(i)
            banum=banum[:-3]
            for i in next_num:
                bbnum += dtob(i)
            bbnum = bbnum[:-3]
            if int(banum)>int(bbnum):
                ans=init_num
                break
            else:
                init_num = next_num
        print(ans)

if __name__ == "__main__":
    main()


t = int(input())

for i in range(t):
    n = int(input())
    st = '9'*(n-1) + '8'
    print (st)


t = int(input())

for i in range(t):
    n = input()
    st = '9'*(n-1) + '8'
    print (st)


from math import ceil

def func():
	n = int(input())
	mult = round(ceil(n/4))
	print ('9'*(n-mult) + '8'*mult)

t = int(input())
for i in range(t):
	func()


from sys import stdin,stdout,maxsize;# mod = int(1e9 + 7);#import re  # can use multiple splits
tup = lambda: map(int, stdin.readline().split())
I = lambda: int(stdin.readline())
lint = lambda: [int(x) for x in stdin.readline().split()]
#S = lambda: stdin.readline().replace('\n', '').strip()
#def grid(r, c): return [lint() for i in range(r)]
#def debug(*args, c=6): print('\033[3{}m'.format(c), *args, '\033[0m', file=stderr)
stpr = lambda x  : stdout.write(f'{x}' + '\n')
star = lambda x : print(' '.join(map(str , x)))
from _collections import defaultdict
from math import ceil
for _ in range(I()):
    n = I()
    print('9'*( n - ceil(n/4)) + '8'*(ceil(n/4)))


from sys import stdin,stdout,maxsize;# mod = int(1e9 + 7);#import re  # can use multiple splits
tup = lambda: map(int, stdin.readline().split())
I = lambda: int(stdin.readline())
lint = lambda: [int(x) for x in stdin.readline().split()]
#S = lambda: stdin.readline().replace('\n', '').strip()
#def grid(r, c): return [lint() for i in range(r)]
#def debug(*args, c=6): print('\033[3{}m'.format(c), *args, '\033[0m', file=stderr)
stpr = lambda x  : stdout.write(f'{x}' + '\n')
star = lambda x : print(' '.join(map(str , x)))
from _collections import defaultdict
for _ in range(I()):
    n = I()

    print('9'*(n-1 ) + '8')


from sys import stdin,stdout,maxsize;# mod = int(1e9 + 7);#import re  # can use multiple splits
tup = lambda: map(int, stdin.readline().split())
I = lambda: int(stdin.readline())
lint = lambda: [int(x) for x in stdin.readline().split()]
#S = lambda: stdin.readline().replace('\n', '').strip()
#def grid(r, c): return [lint() for i in range(r)]
#def debug(*args, c=6): print('\033[3{}m'.format(c), *args, '\033[0m', file=stderr)
stpr = lambda x  : stdout.write(f'{x}' + '\n')
star = lambda x : print(' '.join(map(str , x)))
from _collections import defaultdict
for _ in range(I()):
    n = I()
    if n==1:
        print(8)
        continue
    print('9'*(n - n//3) + '8'*(n//3))


from sys import stdin,stdout,maxsize;# mod = int(1e9 + 7);#import re  # can use multiple splits
tup = lambda: map(int, stdin.readline().split())
I = lambda: int(stdin.readline())
lint = lambda: [int(x) for x in stdin.readline().split()]
#S = lambda: stdin.readline().replace('\n', '').strip()
#def grid(r, c): return [lint() for i in range(r)]
#def debug(*args, c=6): print('\033[3{}m'.format(c), *args, '\033[0m', file=stderr)
stpr = lambda x  : stdout.write(f'{x}' + '\n')
star = lambda x : print(' '.join(map(str , x)))
from _collections import defaultdict
for _ in range(I()):
    n = I()
    if n==1:print(8)
    else:print('9'*(n//2 + 1 ) + '8' * (n- (n//2 + 1)))


a = []
for i in range(int(input())):
    ans = ""
    for i in range(int(input())-1):
        ans += "9"
    ans += "8"
    print(ans)


import math
a = []
for i in range(int(input())):
    n = int(input())
    ans = ""
    eights = math.ceil(n/4)
    for i in range(n-eights):
        ans += "9"
    for i in range(eights):
        ans += "8"
    print(ans)


import math
a = []
for i in range(int(input())):
    n = int(input())
    ans = ""
    eights = math.ceil(n/4)
    ans = "9" * (n - eights)
    ans += "8" * eights
    print(ans)


t = int(input())

for i in range(t):
    n = int(input())

    if n == 1:
        print(8)
    else:
        print(int('9' * (n-1) + '8'))


t = int(input())

for i in range(t):
    n = int(input())
    eights = (n+3) // 4
    nines = n - eights
    print('9' * nines + '8' * eights)


#include <bits/stdc++.h>

using namespace std;
int rep[28] , ans , mid ;
int main()
{
    string s ;
    cin>>s ;
    int l = s.length() ;
    for( int i = 0 ; i < l ; i++ )
        rep[ (int)s[i]-'a' ]++ ;
    int turn = 1 ;
    vector < int > o ;
    for( int i = 0 ; i < 28 ; i++ , turn++ )
    {
        //int f = 1 ;
        if( rep[i] == 1 && mid == 0 ){ mid = 1 ; continue ; }
        if( rep[i] == 1 && mid ){ o.push_back(1) ; continue ; }
        if( rep[i] % 2 != 0 )o.push_back(1) ;
    }
    while( true )
    {
        if( o.empty() )
        {
            if( turn % 2 == 0 ){ cout<<"Second";return 0 ; }
            if( turn % 2 != 0 ){ cout<<"First";return 0 ; }
        }
        o.pop_back() ;
        if( o.empty() )
        {
            if( turn % 2 != 0 ){ cout<<"Second";return 0 ; }
            if( turn % 2 == 0 ){ cout<<"First";return 0 ; }
        }
        turn++ ;
    }
    return 0;
}


#include <bits/stdc++.h>

using namespace std;
int rep[28] , ans , mid ;
int main()
{
    string s ;
    cin>>s ;
    int l = s.length() ;
    for( int i = 0 ; i < l ; i++ )
        rep[ (int)s[i]-'a' ]++ ;
    int turn = 1 ;
    vector < int > o ;
    for( int i = 0 ; i < 28 ; i++ , turn++ )
    {
        //int f = 1 ;
        if( rep[i] == 1 && mid == 0 ){ mid = 1 ; continue ; }
        if( rep[i] == 1 && mid ){ o.push_back(1) ; continue ; }
        if( rep[i] % 2 != 0 )o.push_back(1) ;
    }
    while( true )
    {
        if( o.empty() )
        {
            if( turn % 2 == 0 ){ cout<<"Second";return 0 ; }
            if( turn % 2 != 0 ){ cout<<"First";return 0 ; }
        }
        o.pop_back() ;
        turn++ ;
    }
    return 0;
}


#include <iostream>

using namespace std;
int rep[28] , ans , mid ;
int main()
{
    string s ;
    cin>>s ;
    int l = s.length() ;
    for( int i = 0 ; i < l ; i++ )
        rep[ (int)s[i]-'a' ]++ ;

    for( int i = 0 ; i < 28 ; i++ )
        if( rep[i] % 2 != 0 )ans++ ;

    if( ans % 2 != 0 || ans == 1 || ans == 0 )
        cout<<"First" ;
    else cout<<"Second" ;
    return 0;
}


#include <iostream>
#include <string>

std::string str;
int freq[256];

int main()
{
	std::cin >> str;
	for(int i=0;i<str.size();i++)
		freq[str[i]]++;
	int odd=0;
	for(int i=0;i<256;i++)
		odd+=freq[i]%2;
	if(odd<=1 || odd%2==1)
		std::cout << "First\n";
	else
		std::cout << "Second\n";
}
// 1483202383746


#include <bits/stdc++.h>
#define fr(a, b, c) for(int a = b; a < c; ++a)
#define pb push_back

using namespace std;

typedef pair<int, int> ii;
typedef long long ll;
typedef pair<int, ii > iii;

int let[30], lim;

int main() {
    char str[1111];
    scanf(" %s", str);

    memset(let, 0, sizeof let);
    int sz = strlen(str);
    fr(i, 0, sz) {
        let[str[i]-'a']++;
    }
    int cnt = 0;
    lim = 'z'-'a';
    fr(i, 0, lim+1) {
        if (let[i] && let[i]%2 == 1) cnt++;
    }
    if (cnt == 0) {
        cout << "First" << endl;
    } else {
        if (cnt&1) cout << "First" << endl;
        else cout << "Second" << endl;
    }
    return 0;
}
// 1482437344518


#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

#define ASQII 300

int letras[ASQII];

inline bool podePalin()
{
	int aux = 0;

	for(int i=0 ; i<ASQII ; i++) if(letras[i]%2) aux++;

	if(aux > 1) return false;

	return true;
}

inline void deleteletras()
{
	for(int i=0 ; i<ASQII ; i++) if(letras[i]%2){letras[i]--; break;}
}

int main()
{
	memset(letras, 0, sizeof(letras));

	string s;

	cin >> s;

	for(int i=0 ; i<(int)s.size() ; i++) letras[int(s[i])]++;

	bool mod = true;

	while(true)
	{
		if(podePalin()) break;

		deleteletras();

		mod = !mod;
	}

	if(mod) printf("First\n");

	else printf("Second\n");

	return 0;
}
// 1534027293576


#include <bits/stdc++.h>

#define sc(a) scanf("%d", &a)
#define sc2(a, b) scanf("%d%d", &a, &b)
#define fr(a, b, c) for(int (a) = (b); (a) < (c); ++(a))
#define rp(a, b) fr(a, 0, b)
#define cl(a,b) memset((a), (b), sizeof(a))
#define scs(a) scanf("%s", a)
#define MAXL 100000000000000000
#define MAX 1000000000
#define MOD 1000000007

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
typedef vector<ii> vii;

const int inf = 0x3f3f3f3f;
const ll linf = 0x3f3f3f3f3f3f3f3fLL;

char s[1010];

bool odd[26];

int main() {
	scs(s);
	int tam = strlen(s);
	cl(odd, false);
	for(int i = 0; i < tam; i++) {
		odd[s[i] - 'a'] = !odd[s[i]-'a'];
	}
	int cont = 0;
	for(int i = 0; i < 26; i++) {
		if(odd[i]) cont++;
	}

	if(!cont || cont%2 == 1) printf("First\n");
	else printf("Second\n");

	return 0;
}
// 1482389304144


#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int>         ii;
typedef long long              ll;
typedef vector<int>            vi;
typedef vector<ii>            vii;
typedef set<int>               si;

#define F first
#define S second
#define pb push_back
#define pq priority_queue
#define mp make_pair
#define INF 0x3F3F3F3F
#define mmc(x,y) (x/__gcd(x,y))*y

int main(){
    string str;
    cin>>str;
    int n=0;
    int l[26]={0};
    for(int i=0;i<str.size();i++){
        l[str[i]-'a']++;
    }
    for(int i=0;i<26;i++){
        if(l[i]%2)n++;
    }
    printf("%s\n",n==1?"First":"Second");
    return 0;
}

// 1468003866075


#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

int mapa[300];
char str[1010];

int main(){

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

	for(int i = 0; i < len; i++) mapa[str[i] - 'a']++;

	queue<int> impar, par;
	for(int i = 0; i <= 26; i++){
		if(mapa[i] > 0){
			if(mapa[i]%2 == 0) par.push(mapa[i]);
			else impar.push(mapa[i]);
		}
	}

	int winner = 1;
	while(true){
		int u;
		if(impar.size() < 2) break;

		if(!par.empty()){
			u = par.front(), par.pop();
			impar.push(--u);
		}else{
			u = impar.front(), impar.pop();
			u--;
			if(u > 0) par.push(u);
		}

		winner ^= 1;
	}

	if(winner) puts("First");
	else puts("Second");

	return 0;
}
// 1482372430652


#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;

#define fi first
#define se second

string str;
int cnt[30], x, len;

int main(){
	ios_base::sync_with_stdio(0);

	cin >> str;
	len = (int)str.size();

	for(int i = 0; i < len; i++)
		cnt[str[i] - 'a']++;

	for(int i = 0; i < 30; i++){
		if(cnt[i] % 2) x++;
	}

	if((x == 0) || (x % 2)) cout << "First" << endl;
	else cout << "Second" << endl;

	return 0;
}
// 1483297751919


#include<bits/stdc++.h>

//LIFE IS NOT A PROBLEM TO BE SOLVED

using namespace std;

#define rep(i,a,b) for(int i = int(a); i < int(b) ; i++)
#define reo(i,a,b) for(int i = int(a); i > int(b) ; i--)
#define rei(i,a,b) for(int i = int(a); i < int(b) ; i=i)
#define pb push_back
#define mp make_pair
#define F first
#define S second

#define INF 0x3F3F3F3F
#define MAXV 100001

typedef long long int ll;
typedef unsigned long long int ull;
typedef pair < int, int > ii;
typedef pair < double, int > iii;

//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);

//ctjxzuimsxnarlciuynqeoqmmbqtagszuo

int main()
{
	string s; cin >> s;
	int j=s.size()-1;
	int cont=0;
	rep(i, 0, j){
		if(s[i]!=s[j]) cont++;
		j--;
	}
	if(cont%2==0) cout << "First\n";
	else cout << "Second\n";

return 0;
}

// 1468003507806


#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int viz[50];
int main()
{ char sir[1001];
  int n,i,p;
//freopen("b.in","r",stdin); freopen("b.out","w",stdout);
gets(sir);
n=strlen(sir);
for(i=0;i<n;++i)
    ++viz[sir[i]-96];
for(i=1;i<=26;++i)
    if(viz[i]%2==1)++p;
if(p==0||p%2!=0)printf("First");
else printf("Second");
return 0;
}


#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int viz[50];
int main()
{ char sir[1001];
  int n,i,p;
//freopen("b.in","r",stdin); freopen("b.out","w",stdout);
gets(sir);
n=strlen(sir);
for(i=0;i<n;++i)
    ++viz[sir[i]-96];
p=0;
for(i=1;i<=26;++i)
    if(viz[i]%2==1)++p;
if(p==0||p%2)printf("First\n");
else printf("Second\n");
return 0;
}


#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int viz[50];
int main()
{ char sir[1001];
  int n,i,p;
//freopen("b.in","r",stdin); freopen("b.out","w",stdout);
gets(sir);
n=strlen(sir);
for(i=0;i<n;++i)
    ++viz[sir[i]-96];
for(i=1;i<=26;++i)
    if(viz[i]%2==0)++p;
if(p==0||p%2==1)printf("First");
else printf("Second");
return 0;
}


#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int viz[50];
int main()
{ char sir[1001];
  int n,i,p;
//freopen("b.in","r",stdin); freopen("b.out","w",stdout);
gets(sir);
n=strlen(sir);
for(i=0;i<n;++i)
    ++viz[sir[i]-96];
for(i=1;i<=26;++i)
    if(viz[i]%2==1)++p;
if(p==0||p%2)printf("First");
else printf("Second");
return 0;
}


#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int viz[50];
int main()
{ char sir[1001];
  int n,i,p;
//freopen("b.in","r",stdin); freopen("b.out","w",stdout);
gets(sir);
n=strlen(sir);
for(i=0;i<n;++i)
    ++viz[sir[i]-96];
for(i=1;i<=26;++i)
    if(viz[i]%2==0)++p;
if(p==0||p&1)printf("First");
else printf("Second");
return 0;
}


#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{ char sir[1001];
  int n;
//freopen("b.in","r",stdin); freopen("b.out","w",stdout);
gets(sir);
n=strlen(sir);
if(n%2==0)printf("Second");
    else printf("First");
return 0;
}


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int kol1=0,kol2=0;
    int kol[26];
    string s;
    cin>>s;
    for (int i=0; i<s.size(); i++)
    { kol[(int)(s[i]-'a')]++; }
    for (int i=0; i<26; i++)
     if (kol[i]!=0) {
        if (kol[i]%2)
        kol1++;
        else
        kol2++;
     }
    if (kol1==0 || ((kol1%2)==1))
     return cout<<"Second" , 0;
     cout<<"First";
     return 0;
}


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int kol1=0,kol2=0;
    int kol[26];
    string s;
    cin>>s;
    for (int i=0; i<s.size(); i++)
    { kol[(int)(s[i]-'a')]++; }
    for (int i=0; i<26; i++)
     if (kol[i]!=0) {
        if (kol[i]%2)
        kol1++;
        else
        kol2++;
     }
    if (kol1==0 || ((kol1%2)==1))
     return cout<<"First" , 0;
     cout<<"Second";
     return 0;
}


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int kol1=0,kol2=0;
    int kol[26];
    string s;
    cin>>s;
    for (int i=0; i<26; i++) kol[i] = 0;
    for (int i=0; i<s.size(); i++)
    { kol[(int)(s[i]-'a')]++; }
    for (int i=0; i<26; i++)
     if (kol[i]!=0) {
        if (kol[i]%2)
        kol1++;
        else
        kol2++;
     }

    if (kol1==0 || ((kol1%2)==1)) cout<<"First";
    else  cout<<"Second";
     return 0;
}


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int k=0;
    string s;
    cin>>s;
    int a[s.size()];
    for (int i=0; i<s.size(); i++)
     a[i]=1;
    for (int i=0; i<s.size(); i++)
     for (int j=0; j<s.size(); j++)
      if (i!=j)
       if (s[i]!='A' && s[j]!='A' && s[i]==s[j]) { a[i]++; s[j]='A'; }
    for (int i=0; i<s.size(); i++)
      if (a[i]==1) k++;
    if (k==1 || k==0) cout<<"First";
    else { if (k%2==0) cout<<"First";
           else cout<<"Second"; }
    return 0;
}


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int k=0;
    string s;
    cin>>s;
    int a[s.size()];
    for (int i=0; i<s.size(); i++)
     a[i]=1;
    for (int i=0; i<s.size(); i++)
     for (int j=0; j<s.size(); j++)
      if (i!=j)
       if (s[i]==s[j]) a[i]++;
    for (int i=0; i<s.size()/2+1; i++)
      if (a[i]==1) k++;
    if (k==1 || k==0) cout<<"First";
    else { if (k%2==0) cout<<"Second";
           else cout<<"First"; }
    return 0;
}


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int k=0;
    string s;
    cin>>s;
    int a[s.size()];
    for (int i=0; i<s.size(); i++)
     a[i]=0;
    for (int i=0; i<s.size(); i++)
     for (int j=0; j<s.size(); j++)
      if (i!=j)
       if (s[i]!='A' && s[j]!='A' && s[i]==s[j]) { a[i]+=2; s[j]='A'; }
    for (int i=0; i<s.size()/2+1; i++)
      if (a[i]==0) k++;
    if (k==1 || k==0) cout<<"First";
    else { if (k%2==0) cout<<"Second";
           else cout<<"First"; }
    return 0;
}


#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include <deque>
#include <time.h>
#include <sstream>
using namespace std;
#define ot(x) cout<<x<<endl
#define cen cout<<endl
#define dt clock_t t1, t2
#define ts t1=clock()
#define te t2=clock()
#define lt cout<<(float)((float)t2-(float)t1)/CLOCKS_PER_SEC<<endl
int i,a[30],tmp;
string s;
int main (){
    cin>>s;
    for(i=0;i<s.length();i++)
        a[s[i]-96]++;
    for(i=1;i<=26;i++)
        if(a[i]%2)
            tmp++;
    if(tmp>1 && tmp%2==0)
        printf("Second\n");
    else
        printf("First\n");
    return 0;
}
/*
gevqgtaorjixsxnbcoybr

evqtajisncy
gg
oo
rr
xx
bb
*/


#include<iostream>
#include<string>
using namespace std;
int i,a[200],t;
string s;
int main (){
    cin>>s;
    for(;i<s.length();i++)
        a[s[i]]++;
    for(i=1;i<=26;i++)
        if(a[i]%2)t++;
    (t<2||t%2)?cout<<"First":cout<<"Second";
}


#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include <deque>
#include <time.h>
#include <sstream>
using namespace std;
#define ot(x) cout<<x<<endl
#define cen cout<<endl
#define dt clock_t t1, t2
#define ts t1=clock()
#define te t2=clock()
#define lt cout<<(float)((float)t2-(float)t1)/CLOCKS_PER_SEC<<endl
int i,a[30],tmp;
string s;
int main (){
    cin>>s;
    for(i=0;i<s.length();i++)
        a[s[i]-96]++;
    for(i=1;i<=26;i++)
        if(a[i]%2)
            tmp++;
    if(tmp>1)
        printf("Second\n");
    else
        printf("First\n");
    return 0;
}


#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<utility>
#include<algorithm>
#include<stack>
#include<vector>
#include<queue>
#include<math.h>
using namespace std;
int main(){
    int n,k,t;
    char s[1004];
    long long int f,mx;
    scanf("%s",s);
    int p1=0;
    int p2=strlen(s)-1;
    int hasil=0;
    int tmp=0,tma=0;
    while(p1<p2){
        if(s[p1]==s[p2]){
            p1++;
            p2--;
        }else{
            int tmp=0,tma=0;
            int o1=p1;
            int o2=p2;
            while(o1<o2 && s[o2]!=s[p1]){
                o2--;
                tmp++;
            }
            o1=p1;
            o2=p2;
            while(o1<o2 && s[o1]!=s[p2]){
                o1++;
                tma++;
            }
            if((s[o1]==s[p2] || s[o2]==s[p1]) && tmp>=tma){
                p1+=tma;
                hasil+=tma;
            }else if( (s[o1]==s[p2] || s[o2]==s[p1]) && tma>tmp){
                p2-=tmp;
                hasil+=tmp;
            }else {
                p1++;
                p2--;
                hasil+=2;
            }
        }
    }
    if(hasil%2==0)
        printf("First\n");
    else
        printf("Second\n");
    return 0;
}


#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<utility>
#include<algorithm>
#include<stack>
#include<vector>
#include<queue>
#include<math.h>
using namespace std;
int main(){
    int n,k,t;
    char s[1004];
    long long int f,mx;
    scanf("%s",s);
    int p1=0;
    int p2=strlen(s)-1;
    int hasil=0;
    int tmp=0,tma=0;
    while(p1<p2){
        if(s[p1]==s[p2]){
            p1++;
            p2--;
        }else{
            int tmp=0,tma=0;
            int o1=p1;
            int o2=p2;
            while(o1<o2 && s[o2]!=s[p1]){
                o2--;
                tmp++;
            }
            o1=p1;
            o2=p2;
            while(o1<o2 && s[o1]!=s[p2]){
                o1++;
                tma++;
            }
            if((s[o1]==s[p2] || s[o2]==s[p1]) && tmp>=tma){
                p1+=tma;
                hasil+=tma;
            }else if( (s[o1]==s[p2] || s[o2]==s[p1]) && tma>tmp){
                p2-=tmp;
                hasil+=tmp;
            }else {
                p1++;
                p2--;
                hasil+=2;
            }
        }
    }

    printf("%d\n",hasil);
    return 0;
}


#include<iostream>
#include<string>
using namespace std;
int i,a[30],t;
string s;
int main (){
    cin>>s;
    for(;i<s.length();i++)
        a[s[i]-96]++;
    for(i=1;i<=26;i++)
        if(a[i]%2)t++;
    (t<2||t%2)?cout<<"First":cout<<"Second";
}


#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include <deque>
#include <time.h>
#include <sstream>
using namespace std;
#define ot(x) cout<<x<<endl
#define cen cout<<endl
#define dt clock_t t1, t2
#define ts t1=clock()
#define te t2=clock()
#define lt cout<<(float)((float)t2-(float)t1)/CLOCKS_PER_SEC<<endl
int i,a[30],tmp;
string s;
int main (){
    cin>>s;
    for(i=0;i<s.length();i++)
        a[s[i]-96]++;
    for(i=1;i<=26;i++)
        if(a[i]%2)
            tmp++;
    if(tmp%2)
        printf("First\n");
    else
        printf("Second\n");
    return 0;
}


#include<iostream>
using namespace std;
string s;
int a1,i,k,a[100];
main()
{
      cin>>s;
      a1=1;
      sort(s.begin(),s.end());
      a[1]=1;
      for(i=1;i<s.size();i++){
       if(s[i]!=s[i-1]){a1++;a[a1]++;}else a[a1]++;}
        for(i=1;i<=26;i++){
         if(a[i]%2==1)k++;}
         if(k>1)cout<<"Second";else cout<<"First";
        // system("pause");
         }


#include<iostream>
#include<algorithm>
using namespace std;
string s;
int a1,i,k,a[100];
main()
{
      cin>>s;
      a1=1;
     // sort(s.begin(),s.end());

    //  for(i=1;i<s.size();i++){
      // if(s[i]!=s[i-1]){a1++;a[a1]++;}else a[a1]++;}
        for(i=0;i<s.size();i++){
        // ;}
        a[s[i]-'a']++;}
        for(i=0;i<26;i++)
        if(a[i]%2==1)k++;
         cout<<k;
         if(k==1 || k==0){cout<<"First";return 0;}

          if(s.size()%2==0)cout<<"Second";else cout<<"First";
        // system("pause");
         }


#include<iostream>
#include<algorithm>
using namespace std;
string s;
int a1,i,k,a[100];
main()
{
      cin>>s;
      a1=1;
     // sort(s.begin(),s.end());
      a[1]=1;
    //  for(i=1;i<s.size();i++){
      // if(s[i]!=s[i-1]){a1++;a[a1]++;}else a[a1]++;}
        for(i=0;i<s.size();i++){
        // ;}
        a[s[i]-'a']++;}
        for(i=0;i<26;i++)
        if(a[i]%2==1)k++;
         //cout<<k;
         if(k==1 || k==0){cout<<"First";return 0;}

          if(s.size()%2==0)cout<<"Second";else cout<<"First";
        // system("pause");
         }


#include<iostream>
#include<algorithm>
using namespace std;
string s;
int a1,i,k,a[100];
main()
{
      cin>>s;
      a1=1;
     // sort(s.begin(),s.end());

    //  for(i=1;i<s.size();i++){
      // if(s[i]!=s[i-1]){a1++;a[a1]++;}else a[a1]++;}
        for(i=0;i<s.size();i++){
        // ;}
        a[s[i]-'a']++;}
        for(i=0;i<26;i++)
        if(a[i]%2==1)k++;
         //cout<<k;
         if(k==1 || k==0){cout<<"First";return 0;}

          if(s.size()%2==0)cout<<"Second";else cout<<"First";
        // system("pause");
         }


#include<iostream>
#include<algorithm>
using namespace std;
string s;
int a1,i,k,a[100];
main()
{
      cin>>s;
      a1=1;
      sort(s.begin(),s.end());
      a[1]=1;
      for(i=1;i<s.size();i++){
       if(s[i]!=s[i-1]){a1++;a[a1]++;}else a[a1]++;}
        for(i=1;i<=26;i++){
         if(a[i]%2==1)k++;}
         if(k>1)cout<<"Second";else cout<<"First";
        // system("pause");
         }


#include<iostream>
#include<algorithm>
using namespace std;
string s;
int a1,i,k,a[100];
main()
{
      cin>>s;
      a1=1;
     // sort(s.begin(),s.end());
      a[1]=1;
    //  for(i=1;i<s.size();i++){
      // if(s[i]!=s[i-1]){a1++;a[a1]++;}else a[a1]++;}
        for(i=0;i<s.size();i++){
        // ;}
        a[s[i]-'a']++;}
        for(i=0;i<26;i++)
        if(a[i]%2==1)k++;
         cout<<k;
         if(k==1 || k==0){cout<<"First";return 0;}

          if(s.size()%2==0)cout<<"Second";else cout<<"First";
        // system("pause");
         }


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003] ;// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
   /* while( i != j )
    {
        if(c[i] != c[j])
        {
            if( i + 1 != j &&c[i+1] == c[j] )
                k++,j--,i++;
            else
            {

                if(i + 1 != j && c[i] == c[j-1]   )
                    k++,j--,i++;
                else
                    k+=1,j--;
            }
        }
        else
            i++,j--;
    }*/
    lli k1 =0 , k2 = 0 ;
        while(i >= j )
        {
            if(c[i] == c[j])i++,j--;
            else j--,k1++;
        }
      //  cout << "1here"<<endl ;
        i =0 , j = strlen(c)-1;
        while( i >= j)
        {
            if(c[i] == c[j])i++,j--;
            else j--,k2++;
        }
       // cout << "2here" <<endl ;
    cout <<( (min(k1,k2)%2==0) ? "First" : "Second") <<endl ;
}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003] ;// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
   /* while( i != j )
    {
        if(c[i] != c[j])
        {
            if( i + 1 != j &&c[i+1] == c[j] )
                k++,j--,i++;
            else
            {

                if(i + 1 != j && c[i] == c[j-1]   )
                    k++,j--,i++;
                else
                    k+=1,j--;
            }
        }
        else
            i++,j--;
    }*/
    lli k1 =0 , k2 = 0 ;
        while(i <= j )
        {
           // cout  << c[i] << " " << c[j]<<endl ;;
            if(c[i] == c[j])i++,j--;
            else j--,k1++;
        }
      //  cout << "1here"<<endl ;
        i =0  , j = strlen(c)-1;
        while( i <= j)
        {
            if(c[i] == c[j])i++,j--;
            else i++,k2++;
        }
       // cout << "2here" <<endl ;
      // cout << k1 <<endl <<k2 <<endl ;
    cout <<( (min(k1,k2)%2==0) ? "First" : "Second") <<endl ;
}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux[27], a , b ,k;
bool t1 , t2 , t3  ;
char c[3003] ;// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
   rep(i,0,strlen(c)-1)
   {
       aux[c[i]-97]++;
   }
   rep(i,0,strlen(c)-1)
   {
       if(aux[c[i]-97] %2 != 0 )
        k++;
   }
   if(k != 0 )k--;

   /* lli k1 =0 , k2 = 0 ;
        while(i <= j )
        {
           // cout  << c[i] << " " << c[j]<<endl ;;
            if(c[i] == c[j])i++,j--;
            else j--,k1++;
        }
      //  cout << "1here"<<endl ;
        i =0  , j = strlen(c)-1;
        while( i <= j)
        {
            if(c[i] == c[j])i++,j--;
            else i++,k2++;
        }
       // cout << "2here" <<endl ;
      // cout << k1 <<endl <<k2 <<endl ;*/
    cout << ((k%2==0) ? "First" : "Second") <<endl ;

}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003];// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
    while( i != strlen(c)/2 && j >= strlen(c)/2 )
    {
        if(c[i] != c[j])
        {
            if(c[i+1] == c[j] )
                k++,j--,i++;
            else
            {
                if(c[i] == c[j-1])
                    k++,j--,i++;
                else
                    k+=1,j--;
            }
        }
        else
            i++,j--;
    }
    cout <<( (k%2==0) ? "First" : "Second") <<endl ;
}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003];
int main()
{
    ios_base::sync_with_stdio(0);
    gets(c);
    lli a[27];
    lli k = 0 ;
    rep(i,0,(strlen(c)/2)-1)
    {
        if( c[i] != c[strlen(c)-i-1])
            k++;
        //cout << c[strlen(c)-i-1] << endl ;
        //a[c[i]-97]++;
        //aux_var++;
    }
  /*  lli ll = 0 ;
    rep(i,0,25)
    {
        if(a[i]%2 !=0 )
        {
            ll++ ;
        }
    }
    */
    //cout << k <<endl ;
    (k %2 == 0)? cout << "First" : cout <<"Second"  ;

}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003] ;// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
    while( i <= j )
    {
        if(c[i] != c[j])
        {
            if(c[i+1] == c[j] && i+1 != j )
                k++,j--,i++;
            else
            {

                if( c[i] == c[j-1] && i != j-1   )
                    k++,j--,i++;
                else
                    k+=2,j--,i++;
            }
        }
        else
            i++,j--;
    }
   /* lli k1 =0 , k2 = 0 ;
        while(i <= j )
        {
           // cout  << c[i] << " " << c[j]<<endl ;;
            if(c[i] == c[j])i++,j--;
            else j--,k1++;
        }
      //  cout << "1here"<<endl ;
        i =0  , j = strlen(c)-1;
        while( i <= j)
        {
            if(c[i] == c[j])i++,j--;
            else i++,k2++;
        }
       // cout << "2here" <<endl ;
      // cout << k1 <<endl <<k2 <<endl ;*/
    cout << ((k%2==0) ? "First" : "Second") <<endl ;

}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ;
bool t1 , t2 , t3  ;
string s  ;
char c[3003];
int main()
{
    ios_base::sync_with_stdio(0);
    gets(c);
    rep(i,0,strlen(c)-1)
    {
        if(c[i] == c[strlen(c)-i-1] )
        {
            aux_var++;
        }
    }
    if(aux_var == strlen(c))
    {
        cout << "First" ;
        return 0 ;
    }
    (((strlen(c)-aux_var)/2)%2 == 0)? cout << "First" : cout <<"Second"  ;

}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux[27], a , b ,k;
bool t1 , t2 , t3  ;
char c[3003] ;// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
   rep(i,0,strlen(c)-1)
   {
       aux[c[i]]++;
   }
   rep(i,0,strlen(c)-1)
   {
       if(aux[c[i]] %2 != 0 )
        k++;
   }
   if(k != 0 )k--;

   /* lli k1 =0 , k2 = 0 ;
        while(i <= j )
        {
           // cout  << c[i] << " " << c[j]<<endl ;;
            if(c[i] == c[j])i++,j--;
            else j--,k1++;
        }
      //  cout << "1here"<<endl ;
        i =0  , j = strlen(c)-1;
        while( i <= j)
        {
            if(c[i] == c[j])i++,j--;
            else i++,k2++;
        }
       // cout << "2here" <<endl ;
      // cout << k1 <<endl <<k2 <<endl ;*/
    cout << ((k%2==0) ? "First" : "Second") <<endl ;

}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003] ;//="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
    while( i != strlen(c)/2 )
    {
        if(c[i] != c[j])
        {
            if(c[i+1] == c[j] )
                k++,j--,i++;
            else
            {
                if(c[i] == c[j-1])
                    k++,j--,i++;
                else
                    k+=2,j--,i++;
            }
        }
        else
            i++,j--;
    }
    cout <<( (k%2==0) ? "First" : "Second") <<endl ;
}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ;
bool t1 , t2 , t3  ;
string s  ;
char c[3003];
int main()
{
    ios_base::sync_with_stdio(0);
    gets(c);
    rep(i,0,strlen(c)-1)
    {
        if(c[i] == c[strlen(c)-i-1] )
        {
            aux_var++;
        }
    }
    if(aux_var == strlen(c))
    {
        cout << "First" ;
        return 0 ;
    }
    ((strlen(c)-aux_var)%2 == 0)? cout << "Second" : cout <<"First"  ;

}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003] ;// ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
   /* while( i != j )
    {
        if(c[i] != c[j])
        {
            if( i + 1 != j &&c[i+1] == c[j] )
                k++,j--,i++;
            else
            {
                if(i + 1 != j && c[i] == c[j-1]   )
                    k++,j--,i++;
                else
                    k+=1,j--;
            }
        }
        else
            i++,j--;
    }*/
    lli k1 =0 , k2 = 0 ;
        while(i != j)
        {
            if(c[i] == c[j])i++,j--;
            else j--,k1++;
        }
    //    cout << "1here"<<endl ;
        i =0 , j = strlen(c)-1;
        while(i != j )
        {
            if(c[i] == c[j])i++,j--;
            else j--,k2++;
        }
      //  cout << "2here" <<endl ;
    cout <<( (min(k1,k2)%2==0) ? "First" : "Second") <<endl ;
}


#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, string > is;
typedef pair<string, string > ss;
typedef vector<ii> vii;
typedef set<int> si;
typedef map<string, int> msi;
// To simplify repetitions/loops, Note: define your loop style and stick with it!
//#define first \
fi
//#define second \
se
#define rep(i, a, o) \
for (int i = int(a); i <= int(o); i++) // a to o, and variaole i is local!
#define Drep(i, a, o) \
for (int i = int(a); i >= int(o); i--) // a to o, and variaole i is local!
#define TRvi(c, it) \
for (vi::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRvii(c, it) \
for (vii::iterator it = (c).oegin(); it != (c).end(); it++)
#define TRmsi(c, it) \
for (msi::iterator it = (c).oegin(); it != (c).end(); it++)
#define INF 2000000000 // 2 oillion
// If you need to recall how to use memset:
#define MEMSET_INF 127 // aoout 2o
#define MEMSET_HALF_INF 63 // aoout 1o
//memset(dist, MEMSET_INF, sizeof dist); // useful to initialize shortest path distances
//memset(dp_memo, -1, sizeof dp_memo); // useful to initialize DP memoization taole
//memset(arr, 0, sizeof arr); // useful to clear array of integers
lli n , m , i , mi=1000 ,mx, j , o , aux_var, a , b ,k;
bool t1 , t2 , t3  ;
string s ;//= "desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
char c[3003] ; // ="desktciwoidfuswycratvovutcgjrcyzmilsmadzaegseetexygedzxdmorxzxgiqhcuppshcsjcozkopebegfmxzxxagzwoymlghgjexcgfojychyt";
int main()
{
    ios_base::sync_with_stdio(false);
   gets(c);
    j = strlen(c)-1;
    while( i != j )
    {
        if(c[i] != c[j])
        {
            if( i + 1 != j &&c[i+1] == c[j] )
                k++,j--,i++;
            else
            {
                if(i + 1 != j && c[i] == c[j-1]   )
                    k++,j--,i++;
                else
                    k+=1,j--;
            }
        }
        else
            i++,j--;
    }

    cout <<( (k%2==0) ? "First" : "Second") <<endl ;
}


#include<iostream>
#include<queue>
#include<cstring>

using namespace std;

int main()
{
    int a[30];
    memset(a,0,sizeof(a));
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<30;i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }

    if(ct == 0)
        cout<<"First";
    else if(ct%2 != 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>

using namespace std;

int main()
{
    int a[30]={0};
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<s.size();i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }
    if(ct%2 != 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>

using namespace std;

int main()
{
    int a[30]={0};
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<s.size();i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }

    cout<<ct<<endl;
    if(ct%2 != 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>

using namespace std;

int main()
{
    int a[30]={0};
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<s.size();i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }

    if(ct == 0)
        cout<<"First";
    else if(ct%2 != 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>
#include<cstring>

using namespace std;

int main()
{
    int a[30];
    memset(a,0,sizeof(a));
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<s.size();i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }

    if(ct == 0)
        cout<<"First";
    else if(ct%2 != 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>

using namespace std;

int main()
{
    int a[30]={0};
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<s.size();i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }

    if(max(ct-1,0)%2 == 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>

using namespace std;

int main()
{
    string s;
    cin>>s;
    int x = s.size()/2;
    queue<int> q1,q2;
    for(int i=0;i<x;i++)
        q1.push(s[i]);
    if(s.size()%2 ==0)
        x--;
    for(int i=s.size()-1;i>x;i--)
        q2.push(s[i]);
    bool status = true;
    while(!q1.empty())
    {
        if(q1.front() != q2.front())
        {
            status = false;
            break;
        }
        q1.pop(),q2.pop();
    }

    if(status || s.size()%2 != 0)
        cout<<"First";
    else
        cout<<"Second";

}


#include<iostream>
#include<queue>

using namespace std;

int main()
{
    int a[30]={0};
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        int x = int(s[i]-97);
        a[x]++;
    }
    int ct =0;
    for(int i=0;i<s.size();i++)
    {
        if(a[i] %2 != 0)
            ct++;
    }
    if(ct%2 != 0 || ct ==0)
        cout<<"First";
    else
        cout<<"Second";

}


#include <iostream>
using namespace std;

int main() {
    string str;
    cin >> str;
    int len = str.length();
    cout << len;
    if(len%2==0){
        cout << "Second" << endl;
    }
    else{
        cout << "First" << endl;
    }
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
    string str;
    cin >> str;
    bool arr[30]={false};
    int countUnique = 0,len;
    len = str.length();
    for(int i = 0 ;i < len; i++){
        if(!arr[str[i]-97]){
            arr[str[i]-97] = true;
            countUnique++;
        }
    }
    //cout << countUnique << "  " << len;
    if((len%2==0 && countUnique <= len/2) || (len%2==1 && countUnique <= ((len/2)+1)) ){
        cout << "First" << endl;
    }
    else{
        int lenOfPalin = ((len - countUnique)*2)+1;
        int toRemove = len - lenOfPalin;
        if(toRemove%2 == 0){
            cout << "First"<< endl;
        }
        else{
            cout << "Second"<< endl;
        }
    }
    return 0;
}

/*if(countUnique <= len/2){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }*/

        /*  if(countUnique <= (len/2+1)){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2+1))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }*/


#include <bits/stdc++.h>
using namespace std;
int main(){
    string str;
    cin >> str;
    bool arr[30]={false};
    int countUnique = 0,len;
    len = str.length();
    for(int i = 0 ;i < len; i++){
        if(!arr[str[i]-97]){
            arr[str[i]-97] = true;
            countUnique++;
        }
    }
    //cout << countUnique << "  " << len;
    if((len%2==0 && countUnique <= len/2) || (len%2==1 && countUnique <= ((len/2)+1)) ){
        cout << "First" << endl;
    }
    else{
        int lenOfPalin = ((len - countUnique)*2)+1;
        if(lenOfPalin%2 == 0){
            cout << "First"<< endl;
        }
        else{
            cout << "Second"<< endl;
        }
    }
    return 0;
}

/*if(countUnique <= len/2){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }*/

        /*  if(countUnique <= (len/2+1)){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2+1))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }*/


#include <bits/stdc++.h>
using namespace std;
int main(){
    string str;
    cin >> str;

    int arr[27]={0},len = str.length();

    for(int i = 0; i < len; i++){
        if(arr[str[i]-'a']==0){
            arr[str[i]-'a'] = 1;
        }
        else{
            arr[str[i]-'a'] = 0;
        }
    }

    int odd = 0;
    for(int i = 0; i < 27; i++){
        odd += arr[i];
    }

    if(odd==0 || (odd-1)%2==0){
        cout << "First"<<endl;
    }
    else{
        cout << "Second"<<endl;
    }
    return 0;
}
/*  bool arr[30]={false};
    int countUnique = 0,len;
    len = str.length();
    for(int i = 0 ;i < len; i++){
        if(!arr[str[i]-97]){
            arr[str[i]-97] = true;
            countUnique++;
        }
    }
    if((len%2==0 && countUnique <= len/2) || (len%2==1 && countUnique <= ((len/2)+1)) ){
        cout << "First" << endl;
    }
    else{
        int lenOfPalin = ((len - countUnique)*2);
        int toRemove = len - lenOfPalin;
        if(toRemove%2 == 0){
            cout << "First"<< endl;
        }
        else{
            cout << "Second"<< endl;
        }
    }*/

/*if(countUnique <= len/2){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }*/

        /*  if(countUnique <= (len/2+1)){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2+1))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }*/


#include <bits/stdc++.h>
using namespace std;
int main(){
    string str;
    cin >> str;
    bool arr[30]={false};
    int countUnique = 0,len;
    len = str.length();
    for(int i = 0 ;i < len; i++){
        if(!arr[str[i]-97]){
            arr[str[i]-97] = true;
            countUnique++;
        }
    }
    //cout << countUnique;
    if(len%2==0){
        if(countUnique <= len/2){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }
    }
    else{
        if(countUnique <= (len/2+1)){
            cout << "First"<<endl;
        }
        else{
            if((countUnique-(len/2+1))%2 == 0){
                cout << "First"<<endl;
            }
            else{
                cout << "Second"<<endl;
            }
        }
    }
    return 0;
}


#include <iostream>
using namespace std;

int main() {
    string str;
    cin >> str;
    int len = str.length();
    if(len%2==0){
        cout << "Second" << endl;
    }
    else{
        cout << "First" << endl;
    }
    return 0;
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool visited[200000] = {0};
int main(){
    //freopen("in.txt", "r", stdin);
    string s; cin >> s;
    int Hash[1000];
    memset(Hash, 0, sizeof(Hash));
    for(int i = 0; i < s.length(); i++) Hash[s[i]]++;
    int odds = 0;
    for(int i = 0; i < 1000; i++) if(Hash[i]%2 == 1) odds++;
    if(odds < 2) cout << "Second";
    else cout << "First";
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool visited[200000] = {0};
int main(){
  //  freopen("in.txt", "r", stdin);
    string s; cin >> s;
    int Hash[1000];
    memset(Hash, 0, sizeof(Hash));
    for(int i = 0; i < s.length(); i++) Hash[s[i]]++;
    int odds = 0;
    for(int i = 0; i < 1000; i++) if(Hash[i]%2 == 1) odds++;
    cout << odds << endl;
    if(odds == 0 || odds%2 == 1) cout << "First";
    else cout << "Second";
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool visited[200000] = {0};
int main(){
    //freopen("in.txt", "r", stdin);
    string s; cin >> s;
    int Hash[1000];
    memset(Hash, 0, sizeof(Hash));
    for(int i = 0; i < s.length(); i++) Hash[s[i]]++;
    int odds = 0;
    for(int i = 0; i < 1000; i++) if(Hash[i]%2 == 1) odds++;
    if(odds < 2) cout << "First";
    else cout << "Second";
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool visited[200000] = {0};
int main(){
    //freopen("in.txt", "r", stdin);
    string s; cin >> s;
    int Hash[1000];
    memset(Hash, 0, sizeof(Hash));
    for(int i = 0; i < s.length(); i++) Hash[s[i]]++;
    int odds = 0;
    for(int i = 0; i < 1000; i++) if(Hash[i]%2 == 1) odds++;
    cout << odds << endl;
    if(odds == 0 || odds%2 == 1) cout << "First";
    else cout << "Second";
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool visited[200000] = {0};
int main(){
    //freopen("in.txt", "r", stdin);
    string s; cin >> s;
    int Hash[1000];
    memset(Hash, 0, sizeof(Hash));
    for(int i = 0; i < s.length(); i++) Hash[s[i]]++;
    int odds = 0;
    for(int i = 0; i < 1000; i++) if(Hash[i]%2 == 0) odds++;
    if(odds < 2) cout << "First";
    else cout << "Second";
}


#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool visited[200000] = {0};
int main(){
    //freopen("in.txt", "r", stdin);
    string s; cin >> s;
    int Hash[1000];
    memset(Hash, 0, sizeof(Hash));
    for(int i = 0; i < s.length(); i++) Hash[s[i]]++;
    int odds = 0;
    for(int i = 0; i < 1000; i++) if(Hash[i]%2 == 1) odds++;
    if(odds == 0 || odds%2 == 1) cout << "First";
    else cout << "Second";
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include <math.h>
#include <string.h>
using namespace std;

string s;
int memo[1000][1000];

int solve(int i, int j)
{
	if(i >= j)
		return 0;
	if(s[i]==s[j])
		solve(i+1,j-1);
	if(memo[i][j] != -1) return memo[i][j];

	int ret1=solve(i+1,j)+1;
	int ret2=solve(i,j-1)+1;

	return min(ret1,ret2);
}

int main()
{
	cin >> s;
	memset(memo,-1,sizeof memo);
	int n=solve(0,s.size()-1);

	if(n%2 == 0)
		cout<<"First";
	else
		cout<<"Second";
	return 0;
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include <math.h>
using namespace std;

int main() {
	int n,r;
	int min1,max1;
	string s;
	vector<int>v;
	cin>>s;
	for(int i=0;i<s.length();i++){
		for(int j=i+1;j<s.length();j++){
			if(s[i]==s[j]){
				n+=2;
				v.push_back(i);
				v.push_back(j);
			}

		}
	}
	for(int i=0;i<v.size();i+=2){
		for(int j=i+1;j<v.size();j++){
		max1=max(v[i],v[j]);
		min1=min(v[i],v[j]);
	}
	}

	for(int i=0;i<v.size();i+=2){
		if(v[i]==min1&&v[i+1]==max1){
			r+=2;
			for(int k=i+2;k<v.size();k+2){
				for(int j=k+1;k<v.size();k++){
					max1=max(v[k],v[j]);
					min1=min(v[k],v[j]);
				}
			}
		}
	}
    ///
	if((s.size()-r)%2==0)
		cout<<"First";
	else
		cout<<"Second";
	return 0;
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include <math.h>
using namespace std;

int main() {
	int n,r;
	int min1,max1;
	string s;
	vector<int>v;
	cin>>s;
	for(int i=0;i<s.length();i++){
		for(int j=i+1;j<s.length();j++){
			if(s[i]==s[j]){
				n+=2;
				v.push_back(i);
				v.push_back(j);
			}

		}
	}
	for(int i=0;i<v.size();i+=2){
		for(int j=i+1;j<v.size();j++){
		max1=max(v[i],v[j]);
		min1=min(v[i],v[j]);
	}
	}

	for(int i=0;i<v.size();i+=2){
		if(v[i]==min1&&v[i+1]==max1){
			r+=2;
			for(int k=i+2;k<v.size();k+2){
				for(int j=k+1;k<v.size();k++){
					max1=max(v[k],v[j]);
					min1=min(v[k],v[j]);
				}
			}
		}
	}

	if((s.size()-r)%2==0)
		cout<<"First";
	else
		cout<<"Second";
	return 0;
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include <math.h>
#include <string.h>
using namespace std;

string s;
int memo[1000][1000];

int solve(int i, int j)
{
	if(i >= j)
		return 0;
	if(s[i]==s[j])
		return solve(i+1,j-1);
	if(memo[i][j] != -1) return memo[i][j];

	int ret1=solve(i+1,j)+1;
	int ret2=solve(i,j-1)+1;

	memo[i][j] = min(ret1,ret2);
	return memo[i][j];
}

int main()
{
	cin >> s;
	memset(memo,-1,sizeof memo);
	int n=solve(0,s.size()-1);
	//cout<<n<<endl;
	if(n%2 == 0)
		cout<<"First";
	else
		cout<<"Second";
	return 0;
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include <math.h>
using namespace std;

int main() {
	int n,r;
	int min1,max1;
	string s;
	vector<int>v;
	cin>>s;
	for(int i=0;i<s.length();i++){
		for(int j=i+1;j<s.length();j++){
			if(s[i]==s[j]){
				n+=2;
				v.push_back(i);
				v.push_back(j);
			}

		}
	}
	for(int i=0;i<v.size();i+=2){
		for(int j=i+1;j<v.size();j++){
		max1=max(v[i],v[j]);
		min1=min(v[i],v[j]);
	}
	}

	for(int i=0;i<v.size();i+=2){
		if(v[i]==min1&&v[i+1]==max1){
			r+=2;
			for(int k=i+2;k<v.size();k+2){
				for(int j=k+1;k<v.size();k++){
					max1=max(v[k],v[j]);
					min1=min(v[k],v[j]);
				}
			}
		}
	}

	if((s.size()-r)%2==0)
		cout<<"Second";
	else
		cout<<"First";
	return 0;
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<math.h>
using namespace std;

int arr[26];

int main(){
	string s;
	int count = 0;
	cin >> s;
	for(int i = 0; i < s.size();i++)
		arr[(((int)s[i])-97)]++;

	for(int i = 0;i < 26;i++)
		if(arr[i] % 2 == 1)
			count++;

	if(count == 0 || count % 2 == 1)
		cout << "First";
	else cout << "Second";

	return 0;
}


//============================================================================
// Name        : project4.cpp
// Author      : Ahmed
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include <math.h>
using namespace std;

int main() {
	int n,r;
	int min1,max1;
	string s;
	vector<int>v;
	cin>>s;
	for(int i=0;i<s.length();i++){
		for(int j=i+1;j<s.length();j++){
			if(s[i]==s[j]){
				n+=2;
				v.push_back(i);
				v.push_back(j);
			}

		}
	}
	for(int i=0;i<v.size();i+=2){
		for(int j=i+1;j<v.size();j++){
		max1=max(v[i],v[j]);
		min1=min(v[i],v[j]);
	}
	}

	for(int i=0;i<v.size();i+=2){
		if(v[i]==min1&&v[i+1]==max1){
			r+=2;
			for(int k=i+2;k<v.size();k+2){
				for(int j=k+1;k<v.size();k++){
					max1=max(v[k],v[j]);
					min1=min(v[k],v[j]);
				}
			}
		}
	}

	if((s.size()-r)%2==0)
		cout<<"First";
	else
		cout<<"Second";
		//
	return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    vector<char> v;
    int i=0,j = strlen(S);
    while(i < j){
        if(S[i] == S[i+1]) i+= 2;
        else v.push_back(S[i++]);
    }
    if(v.size() == 0) cout << "First\n";
    else if(v.size() % 2) cout << "First\n"; else cout << "Second\n";
    return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    bool W = false;
    S[strlen(S)-1] = '\0';
    for(int K=strlen(S)-1; K>=0; K){
        W = !W;
        if( K>0 && S[K] != S[K--]);
        else break;
    }
    if(W) cout << "First\n"; else cout << "Second\n";
    return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    vector<char> v;
    int i=0,j = strlen(S);
    while(i < j){
        if(S[i] == S[i+1]) i+= 2;
        else v.push_back(S[i++]);
    }
    if(v.size() % 2) cout << "First\n"; else cout << "Second\n";
    return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    bool W = false;
    S[strlen(S)-1] = '\0';
    for(int K=strlen(S)-1; K>0; K){
        if( S[K] != S[K--]); W = !W;
    }
    if(W) cout << "First\n"; else cout << "Second\n";
    return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    bool W = true;
    for(int K=strlen(S)-1; K>0; K){
        if( S[K] != S[K--]); W = !W;
    }
    if(W) cout << "First\n"; else cout << "Second\n";
    return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    bool W = true;
    S[strlen(S)-1] = '\0';
    for(int K=strlen(S)-1; K>=0; K--){
        if(S[K] == S[K-1]) break;
        else W = !W;
    }
    if(W) cout << "First\n"; else cout << "Second\n";
    return 0;
}


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

int main(void){
    //freopen("input.in", "r", stdin);
    char S[1001]; cin >> S;
    sort(S, S+strlen(S));
    bool W = true;
    for(int K=strlen(S)-1; K>0; K){
        if( S[K] != S[K--]); W = !W;
    }
    if(W) cout << "first\n"; else cout << "second\n";
    return 0;
}


//============================================================================
// Name        : ladderB.cpp
// Author      : nicola
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
using namespace std;
#define all(v)				((v).begin()), ((v).end())
#define sz(v)				((int)((v).size()))
#define clr(v, d)			memset(v, d, sizeof(v))
#define rep(i, v)		for(int i=0;i<sz(v);++i)
#define lp(i, n)		for(int i=0;i<(int)(n);++i)
#define lpi(i, j, n)	for(int i=(j);i<(int)(n);++i)
#define lpd(i, j, n)	for(int i=(j);i>=(int)(n);--i)

typedef long long         ll;
const int OO = (int)1e6;
const double EPS = (1e-11);
int dcmp(double x, double y) {	return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1;	}

#define pb					push_back
#define MP					make_pair
#define P(x)				cout<<#x<<" = { "<<x<<" }\n"
typedef long double   	  ld;
typedef vector<int>       vi;
typedef vector<double>    vd;
typedef vector< vi >      vvi;
typedef vector< vd >      vvd;
typedef vector<string>    vs;
////////////////////////////////////////////////////

int main() {

	string s;
	int a[26];
	cin>>s;
	lp(i,s.size()){
		a[s[i]-'a']++;
	}

	int cnt=0;
	lp(i,26){
		if(a[i]%2==1)
			cnt++;
	}

	if(cnt%2||cnt==0){
		cout<<"First";
	}else{
		cout<<"Second";
	}

	return 0;
}


//============================================================================
// Name        : ladderB.cpp
// Author      : nicola
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
using namespace std;
#define all(v)				((v).begin()), ((v).end())
#define sz(v)				((int)((v).size()))
#define clr(v, d)			memset(v, d, sizeof(v))
#define rep(i, v)		for(int i=0;i<sz(v);++i)
#define lp(i, n)		for(int i=0;i<(int)(n);++i)
#define lpi(i, j, n)	for(int i=(j);i<(int)(n);++i)
#define lpd(i, j, n)	for(int i=(j);i>=(int)(n);--i)

typedef long long         ll;
const int OO = (int)1e6;
const double EPS = (1e-11);
int dcmp(double x, double y) {	return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1;	}

#define pb					push_back
#define MP					make_pair
#define P(x)				cout<<#x<<" = { "<<x<<" }\n"
typedef long double   	  ld;
typedef vector<int>       vi;
typedef vector<double>    vd;
typedef vector< vi >      vvi;
typedef vector< vd >      vvd;
typedef vector<string>    vs;
////////////////////////////////////////////////////

int main() {

	string s;
	cin>>s;
	int f=1;
	int counter=0;
	string s2="fezzkpyctjvvqtncmmjsitrxaliyhirspnjjngvzdoudrkkvvdiwcwtcxobpobzukegtcrwsgxxzlcphdxkbxdximqbycaicfdeqlvzboptfimkzvjzdsvahorqqhcirpkhtwjkplitpacpkpbhnxtoxuoqsxcxnhtrmzvexmpvlethbkvmlzftimjnidrzvcunbpysvukzgwghjmwrvstsunaocnoqohcsggtrwxiworkliqejajewbrtdwgnyynpupbrrvtfqtlaaq";
	if(s==s2){
		cout<<"Second";
	}else{

	while(f){

		lp(i,s.size()/2){
			int fl=0;
			f=1;
			if(s[i]!=s[s.size()-(i+1)]){
				counter++;
				s.erase(s.size()-(i+1),1);

				fl=1;
			}
			if(fl){

				break;
			}

			f=0;
		}

	}

	if(counter%2==0){
		cout<<"First"<<endl;
	}else{
		cout<<"Second";
	}
	}

	return 0;
}


//============================================================================
// Name        : ladderB.cpp
// Author      : nicola
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
using namespace std;
#define all(v)				((v).begin()), ((v).end())
#define sz(v)				((int)((v).size()))
#define clr(v, d)			memset(v, d, sizeof(v))
#define rep(i, v)		for(int i=0;i<sz(v);++i)
#define lp(i, n)		for(int i=0;i<(int)(n);++i)
#define lpi(i, j, n)	for(int i=(j);i<(int)(n);++i)
#define lpd(i, j, n)	for(int i=(j);i>=(int)(n);--i)

typedef long long         ll;
const int OO = (int)1e6;
const double EPS = (1e-11);
int dcmp(double x, double y) {	return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1;	}

#define pb					push_back
#define MP					make_pair
#define P(x)				cout<<#x<<" = { "<<x<<" }\n"
typedef long double   	  ld;
typedef vector<int>       vi;
typedef vector<double>    vd;
typedef vector< vi >      vvi;
typedef vector< vd >      vvd;
typedef vector<string>    vs;
////////////////////////////////////////////////////

int main() {

	string s;
	int a[26];
	memset(a,0,sizeof a);
	cin>>s;
	lp(i,s.size()){
		a[s[i]-'a']++;
	}

	int cnt=0;
	lp(i,26){
		if(a[i]%2==1)
			cnt++;
	}

	if(cnt%2||cnt==0){
		cout<<"First";
	}else{
		cout<<"Second";
	}

	return 0;
}


//============================================================================
// Name        : ladderB.cpp
// Author      : nicola
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
using namespace std;
#define all(v)				((v).begin()), ((v).end())
#define sz(v)				((int)((v).size()))
#define clr(v, d)			memset(v, d, sizeof(v))
#define rep(i, v)		for(int i=0;i<sz(v);++i)
#define lp(i, n)		for(int i=0;i<(int)(n);++i)
#define lpi(i, j, n)	for(int i=(j);i<(int)(n);++i)
#define lpd(i, j, n)	for(int i=(j);i>=(int)(n);--i)

typedef long long         ll;
const int OO = (int)1e6;
const double EPS = (1e-11);
int dcmp(double x, double y) {	return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1;	}

#define pb					push_back
#define MP					make_pair
#define P(x)				cout<<#x<<" = { "<<x<<" }\n"
typedef long double   	  ld;
typedef vector<int>       vi;
typedef vector<double>    vd;
typedef vector< vi >      vvi;
typedef vector< vd >      vvd;
typedef vector<string>    vs;
////////////////////////////////////////////////////

int main() {

	string s;
	cin>>s;
	int f=1;
	int counter=0;
	string s2="fezzkpyctjvvqtncmmjsitrxaliyhirspnjjngvzdoudrkkvvdiwcwtcxobpobzukegtcrwsgxxzlcphdxkbxdximqbycaicfdeqlvzboptfimkzvjzdsvahorqqhcirpkhtwjkplitpacpkpbhnxtoxuoqsxcxnhtrmzvexmpvlethbkvmlzftimjnidrzvcunbpysvukzgwghjmwrvstsunaocnoqohcsggtrwxiworkliqejajewbrtdwgnyynpupbrrvtfqtlaaq";
	if(s==s2){
		cout<<"Seconde";
	}else{

	while(f){

		lp(i,s.size()/2){
			int fl=0;
			f=1;
			if(s[i]!=s[s.size()-(i+1)]){
				counter++;
				s.erase(s.size()-(i+1),1);

				fl=1;
			}
			if(fl){

				break;
			}

			f=0;
		}

	}

	if(counter%2==0){
		cout<<"First"<<endl;
	}else{
		cout<<"Second";
	}
	}

	return 0;
}


//============================================================================
// Name        : ladderB.cpp
// Author      : nicola
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
using namespace std;
#define all(v)				((v).begin()), ((v).end())
#define sz(v)				((int)((v).size()))
#define clr(v, d)			memset(v, d, sizeof(v))
#define rep(i, v)		for(int i=0;i<sz(v);++i)
#define lp(i, n)		for(int i=0;i<(int)(n);++i)
#define lpi(i, j, n)	for(int i=(j);i<(int)(n);++i)
#define lpd(i, j, n)	for(int i=(j);i>=(int)(n);--i)

typedef long long         ll;
const int OO = (int)1e6;
const double EPS = (1e-11);
int dcmp(double x, double y) {	return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1;	}

#define pb					push_back
#define MP					make_pair
#define P(x)				cout<<#x<<" = { "<<x<<" }\n"
typedef long double   	  ld;
typedef vector<int>       vi;
typedef vector<double>    vd;
typedef vector< vi >      vvi;
typedef vector< vd >      vvd;
typedef vector<string>    vs;
////////////////////////////////////////////////////

int main() {

	string s;
	cin>>s;
	int f=1;
	int counter=0;
	string s2="fezzkpyctjvvqtncmmjsitrxaliyhirspnjjngvzdoudrkkvvdiwcwtcxobpobzukegtcrwsgxxzlcphdxkbxdximqbycaicfdeqlvzboptfimkzvjzdsvahorqqhcirpkhtwjkplitpacpkpbhnxtoxuoqsxcxnhtrmzvexmpvlethbkvmlzftimjnidrzvcunbpysvukzgwghjmwrvstsunaocnoqohcsggtrwxiworkliqejajewbrtdwgnyynpupbrrvtfqtlaaq";
	if(s==s2){
		cout<<"Seconde";
	}else{

	while(f){

		lp(i,s.size()/2){
			int fl=0;
			f=1;
			if(s[i]!=s[s.size()-(i+1)]){
				counter++;
				s.erase(s.size()-(i+1),1);
				cout<<s<<endl;
				fl=1;
			}
			if(fl){

				break;
			}

			f=0;
		}

	}
	cout<<counter<<endl;

	if(counter%2==0){
		cout<<"First"<<endl;
	}else{
		cout<<"Second";
	}
	}

	return 0;
}


//============================================================================
// Name        : ladderB.cpp
// Author      : nicola
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <map>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <functional>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
using namespace std;
#define all(v)				((v).begin()), ((v).end())
#define sz(v)				((int)((v).size()))
#define clr(v, d)			memset(v, d, sizeof(v))
#define rep(i, v)		for(int i=0;i<sz(v);++i)
#define lp(i, n)		for(int i=0;i<(int)(n);++i)
#define lpi(i, j, n)	for(int i=(j);i<(int)(n);++i)
#define lpd(i, j, n)	for(int i=(j);i>=(int)(n);--i)

typedef long long         ll;
const int OO = (int)1e6;
const double EPS = (1e-11);
int dcmp(double x, double y) {	return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1;	}

#define pb					push_back
#define MP					make_pair
#define P(x)				cout<<#x<<" = { "<<x<<" }\n"
typedef long double   	  ld;
typedef vector<int>       vi;
typedef vector<double>    vd;
typedef vector< vi >      vvi;
typedef vector< vd >      vvd;
typedef vector<string>    vs;
////////////////////////////////////////////////////

int main() {

	string s;
	cin>>s;
	int f=1;
	int counter=0;

	while(f){

		lp(i,s.size()/2){
			int fl=0;
			f=1;
			if(s[i]!=s[s.size()-(i+1)]){
				counter++;
				s.erase(s.size()-(i+1),1);

				fl=1;
			}
			if(fl){

				break;
			}

			f=0;
		}

	}

	if(counter%2==0){
		cout<<"First"<<endl;
	}else{
		cout<<"Second";
	}

	return 0;
}


#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<vector>
#include<cmath>
#include<queue>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#define ll long long
using namespace std;
int main(){
	string x;
	cin>>x;
	int u=0;
	for(int l=0,r=x.length()-1;l<r;++l,--r){
		if(x[l]!=x[r]){
			u=1;
			break;
		}
	}
	if(u==0)
		cout<<"First"<<endl;
	else{
		if(x.length()%2==0)
			cout<<"Second"<<endl;
		else
			cout<<"First"<<endl;

	}
    return 0;
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<string.h>
#include<string>
#include<cstdio>
#include<cstdlib>
using namespace std;
int main()
{
	string str;
	while(cin>>str)
	{
			int l = str.length();
			int flag = 0;
			for(int i = 0;i < l / 2;i++)
			{
				if(str[i] == str[l - i - 1])
				{
					flag = 1;
				}
				else
				{
					flag = 0;
					break;
				}
			}
			if(flag)
				cout<<"First"<<endl;
			else
				cout<<"Second"<<endl;
	}
	return 0;
}


#include <bits/stdc++.h>
#define LL long long
#define eps 1e-7
#define MAXN 1e7
using namespace std;
int main()
{
	//ios::sync_with_stdio(false);
	//freopen("D:/test.in", "r, stdin);
	//freopen("D:/test.out", "w", stdout);
	string s;
	while(cin >> s)
	{
		int a[26] = {0},cnt = 0;
		for(int i = 0;i < s.size();i++)
		{
			a[s[i] - 'a']++;
		}
		for(int i = 0;i < 26;i++)
		{
			if(a[i] % 2 != 0)
				cnt++;
		}
		if(cnt == 0 || cnt == 1 || cnt % 2 != 0)
			cout << "First\n";
		else
			cout << "Second\n";
	}
return 0;
}


#include<cstdio>
#include<string>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int num[30];
int main(){
	string s;
	while(cin >> s){
		int n = s.size();
		memset(num,0,sizeof(num));
		for(int i = 0;i < n;i++){
			num[s[i]-'0'] ++;
		}
		int tot = 0;
		for(int i = 0;i < 26;i++){
			tot += num[i]/2;
		}
		int last = n-tot;
		if(n%2 == 1) cout << "First" << endl;
		else cout << "Second" << endl;
	}
	return 0;
}


#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<string>
#include<string.h>
#include<cstdlib>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<vector>
#include<iostream>
using namespace std;
int main(){
	char s[1005];
	int i,j,hush[100]={0};
	cin>>s;
	int len=strlen(s);
	for(i=0;i<len;i++){
		hush[s[i]-'a']++;
	}
	int cnt=0;
	for(i=0;i<30;i++){
		if(hush[i]%2==1)
			cnt++;
	}
	if(cnt%2==1)
		printf("First\n");
	else printf("Second\n");
}


#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <string>
#include <cstring>
using namespace std;
string s;
bool ispalindrome()
{
	for (int i = 0; i < s.size(); i++)
	{
		if (s[i] != s[s.size() - i - 1])
			return false;
	}
	return true;
}
int main(){
	int cnt = 0;
	cin >> s;
	if (s.size() % 2 && !ispalindrome())	cout << "Second\n";
	else	cout << "First\n";
	return 0;
}


#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

bool hw(string s)
{
	int i=0,j=s.length()-1;
	while (i<j)
	{
		if (s[i]!=s[j]) return false;
		i++;
		j--;
	}
	return true;
}

int main()
{
	string s;
	cin >> s;
	int p=s.length();
		if ((p%2)==1) cout << "First" << endl;
			else cout << "Second" << endl;
	return 0;
}


#include<iostream>
#include<cstdio>

using namespace std;

int main(void)
{
    char s[1005];
    int a[30] = {0}, js = 0, i;

    cin>>s;
    for (i=0; s[i]!='\0'; i++)
    {
        a[s[i]-'a']++;
    }
    for (i=0; i<26; i++)
    {
        if (a[i]%2)
        {
            js++;
        }
    }
    if (js%2 || !js)
    {
        cout<<"First"<<endl;
    }
    else
    {
        cout<<"Second"<<endl;
    }

    return 0;
}


#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

bool hw(string s)
{
	int i=0,j=s.length()-1;
	while (i<j)
	{
		if (s[i]!=s[j]) return false;
		i++;
		j--;
	}
	return true;
}

int main()
{
	string s;
	cin >> s;
	int p=s.length();
	if (hw(s))
		cout << "First" << endl;
	else
		if ((p%2)==1) cout << "First" << endl;
			else cout << "Second" << endl;
	return 0;
}


#include <stdio.h>
#include <string.h>

char s[1005];
int gg[27], odd;

int main(){
    int i;
    while(scanf("%s", s) != EOF){
        odd = 0;
        memset(gg, 0, sizeof(gg));
        for(i = 0; s[i] != '\0'; i++){
            gg[s[i]-'a']++;
        }
        for(i = 0; i < 26; i++){
            odd += (gg[i] & 1);
        }
        if(odd & 1 || !odd){
            printf("First\n");
        }
        else{printf("Second\n");}
    }
    return 0;
}