There is a string s of length 3 or greater.
No two neighboring characters in s are equal.
Takahashi and Aoki will play a game against each other.
The two players alternately performs the following operation, Takahashi going first:
 - Remove one of the characters in s, excluding both ends. However, a character cannot be removed if removal of the character would result in two neighboring equal characters in s.
The player who becomes unable to perform the operation, loses the game. Determine which player will win when the two play optimally.

-----Constraints-----
 - 3 ≤ |s| ≤ 10^5
 - s consists of lowercase English letters.
 - No two neighboring characters in s are equal.

-----Input-----
The input is given from Standard Input in the following format:
s

-----Output-----
If Takahashi will win, print First. If Aoki will win, print Second.

-----Sample Input-----
aba

-----Sample Output-----
Second

Takahashi, who goes first, cannot perform the operation, since removal of the b, which is the only character not at either ends of s, would result in s becoming aa, with two as neighboring.

Difficulty: HARD

Starter code:

Solutions:
s = input()
print(['Second', 'First'][len(s.rstrip(s[0])) % 2])


S = input()
flag = (S[0] != S[-1]) ^ (len(S) % 2 == 0)
print('First' if flag else 'Second')


s = list(input())
n = len(s)
if s[0] == s[n - 1] and n % 2 == 0 or (s[0] != s[n - 1] and n % 2 != 0):
	print('First')
else:
	print('Second')


s = input()
print('Second' if (len(s) % 2 == 0) ^ (s[0] == s[-1]) else 'First')


s = input()
print('SFeicrosntd'[len(s) + (s[0] == s[-1]) & 1::2])


S = input()
N = len(S)
if S[0] == S[-1]:
	if N % 2 == 0:
		print('First')
	else:
		print('Second')
elif N % 2 == 0:
	print('Second')
else:
	print('First')


S = input()
ans = 'First'
if (S[0] == S[-1]) ^ (len(S) % 2 == 0):
	ans = 'Second'
print(ans)


import sys
s = str(input())
n = len(s)
if s[0] == s[n - 1]:
	move = 1
else:
	move = 0
move = (n - move) % 2
if move == 1:
	print('First')
else:
	print('Second')


import sys
read = sys.stdin.read
readline = sys.stdin.readline
s = input()
if (s[0] == s[-1]) + len(s) & 1:
	print('First')
else:
	print('Second')


s = input()
if len(s) % 2 == 0 and s[0] == s[-1]:
	print('First')
elif len(s) % 2 == 0 or s[0] == s[-1]:
	print('Second')
else:
	print('First')


import sys
input = sys.stdin.readline
s = str(input().strip())
n = len(s)
if s[0] is s[n - 1]:
	move = 1
else:
	move = 0
move = (n - move) % 2
if move is 1:
	print('First')
else:
	print('Second')


s = input()
print(['Second', 'First'][(s[0] == s[-1]) ^ len(s) % 2])


def main():
	s = input()
	if s[0] == s[-1]:
		ss = 1
	else:
		ss = 0
	if len(s) % 2 == ss:
		print('Second')
	else:
		print('First')

def __starting_point():
	main()
__starting_point()


import collections

def solve():
	s = input()
	if s[0] == s[-1]:
		if len(s) % 2 == 0:
			print('First')
		else:
			print('Second')
	elif len(s) % 2 == 0:
		print('Second')
	else:
		print('First')

def __starting_point():
	solve()
__starting_point()


s = input()
n = len(s)
if s[0] == s[n - 1]:
	move = 1
else:
	move = 0
move = (n - move) % 2
if move == 1:
	print('First')
else:
	print('Second')


s = list(input())
l = len(s)
if s[0] == s[-1]:
	if l % 2 == 0:
		print('First')
	else:
		print('Second')
elif l % 2 == 0:
	print('Second')
else:
	print('First')


S = input()
start_end = S[0] == S[-1]
odd = len(S) % 2
print('First' if start_end and (not odd) or (not start_end and odd) else 'Second')


s = input()
rem = 3 if s[0] == s[-1] else 2
if (len(s) - rem) % 2 == 0:
	print('Second')
else:
	print('First')


s = input()
players = ['First', 'Second']
last = 1 if s[0] == s[-1] else 0
cnt = (len(s) - 2 + 1 + last) % 2
ans = players[cnt]
print(ans)


n = input()
if len(n) % 2 == 0:
	if n[0] != n[-1]:
		print('Second')
	else:
		print('First')
elif n[0] == n[-1]:
	print('Second')
else:
	print('First')


S = list(input())
N = len(S)
A = N % 2
B = (S[0] == S[-1]) * 1
if A == 1 and B == 1:
	print('Second')
elif A == 1 and B == 0:
	print('First')
elif A == 0 and B == 1:
	print('First')
elif A == 0 and B == 0:
	print('Second')


s = input().strip()
l = len(s)
if (l + (s[0] == s[-1])) % 2:
	print('First')
else:
	print('Second')


def remove(s):
	i = 1
	count = 0
	while i < len(s) - 1:
		if s[i - 1] != s[i + 1]:
			s.pop(i)
			count += 1
		i += 1
	return count
s = list(input())
count = 0
while True:
	tmp = remove(s)
	if tmp == 0:
		break
	count += tmp
if count % 2 == 0:
	print('Second')
else:
	print('First')


S = input().strip()
if S[0] == S[-1]:
	print('First' if len(S) % 2 == 0 else 'Second')
else:
	print('Second' if len(S) % 2 == 0 else 'First')


s = input()
a = s[0]
b = s[len(s) - 1]
n = len(s) % 2
if n == 1 and a == b:
	print('Second')
elif n == 1 and a != b:
	print('First')
elif n == 0 and a == b:
	print('First')
else:
	print('Second')


def ARC064D():
	s = list(input())
	if s[0] == s[-1]:
		key = 1
	else:
		key = -1
	if len(s) % 2 != 0:
		key *= -1
	if key == 1:
		print('First')
	else:
		print('Second')
ARC064D()


S = input()
start = len(S) % 2
if S[0] == S[-1]:
	goal = 1
else:
	goal = 0
can = (start + goal) % 2
if can == 0:
	print('Second')
else:
	print('First')


ss = input()
if ss[0] == ss[-1] and len(ss) % 2 == 0 or (ss[0] != ss[-1] and len(ss) % 2):
	print('First')
else:
	print('Second')


s = input()
S = list(s)
f = False
k = 1
flag = False
while len(S) > 2:
	if k == len(S) - 1:
		if flag:
			k = 1
			flag = False
			continue
		break
	if S[k - 1] != S[k + 1]:
		S.pop(k)
		f = not f
		flag = True
	else:
		k += 1
if f:
	print('First')
else:
	print('Second')


s = input()
lr_same = s[0] == s[-1]
odd = len(s) % 2
if lr_same ^ odd:
	print('First')
else:
	print('Second')


s = input()
table = [0] * 30
o = lambda x: ord(x) - ord('a')
kind = 0
for c in s:
	if table[o(c)] == 0:
		kind += 1
	table[o(c)] += 1
if kind > 2 and s[0] != s[-1]:
	print('First') if len(s) % 2 == 1 else print('Second')
elif kind > 2 and s[0] == s[-1]:
	print('Second') if len(s) % 2 == 1 else print('First')
else:
	print('Second')


import sys

def input():
	return sys.stdin.readline().strip()
s = input()
if s[0] == s[-1]:
	if len(s) % 2 == 0:
		print('First')
	else:
		print('Second')
elif len(s) % 2 == 0:
	print('Second')
else:
	print('First')


import sys
stdin = sys.stdin
sys.setrecursionlimit(10 ** 5)

def li():
	return list(map(int, stdin.readline().split()))

def li_():
	return [int(x) - 1 for x in stdin.readline().split()]

def lf():
	return list(map(float, stdin.readline().split()))

def ls():
	return stdin.readline().split()

def ns():
	return stdin.readline().rstrip()

def lc():
	return list(ns())

def ni():
	return int(stdin.readline())

def nf():
	return float(stdin.readline())
s = lc()
left = s[0]
right = s[-1]
if s[0] == s[-1]:
	if len(s) % 2:
		print('Second')
	else:
		print('First')
elif len(s) % 2:
	print('First')
else:
	print('Second')


ar = list(input())
b = 0
while True:
	count = 0
	for i in range(1, len(ar) - 1):
		if ar[i - 1] != ar[i + 1]:
			count += 1
			del ar[i]
			b += 1
			break
	if count == 0:
		if b % 2 == 1:
			print('First')
		else:
			print('Second')
		break


s = input()
(x, y) = (s[0], s[-1])
l = len(s)
if l % 2 == 0:
	if x == y:
		print('First')
	else:
		print('Second')
if l % 2 == 1:
	if x != y:
		print('First')
	else:
		print('Second')


S = input().rstrip()
print('First' if (len(S) + (S[0] == S[-1])) % 2 else 'Second')


S = input()
A = len(S) % 2
B = 0 if S[0] == S[-1] else 1
print('Second' if A ^ B else 'First')


S = input()
l = len(S)
print('First' if l & 1 ^ (S[0] == S[-1]) else 'Second')


(a, *s, g) = input()
c = s.count
if a == g:
	if (len(s) - c(a) * 2) % 2:
		print('Second')
	else:
		print('First')
elif (len(s) - max(c(a), c(g)) * 2) % 2:
	print('First')
else:
	print('Second')


s = input().strip()
(c1, c2) = (s[0], s[-1])
if c1 == c2:
	if len(s) % 2:
		print('Second')
	else:
		print('First')
elif len(s) % 2:
	print('First')
else:
	print('Second')


s = input()
l = len
p = print
if s[0] == s[-1] and l(s) % 2 == 0 or (s[0] != s[-1] and l(s) % 2 == 1):
	p('First')
else:
	p('Second')


import sys
sys.setrecursionlimit(10 ** 8)
ini = lambda : int(sys.stdin.readline())
inm = lambda : list(map(int, sys.stdin.readline().split()))
inl = lambda : list(inm())
ins = lambda : sys.stdin.readline().rstrip()
s = ins()

def solve():
	lreq = s[0] == s[-1]
	odd = len(s) % 2 == 1
	return odd ^ lreq
print('First' if solve() else 'Second')


from operator import xor
S = input()
a = (len(S) + 1) % 2
b = int(S[0] == S[-1])
ans = 'Second' if xor(a, b) else 'First'
print(ans)


s = list(input())
n = len(s)
flag = 1
if n % 2 == 0:
	flag = 0
else:
	for i in range(n - 2):
		if s[i] != s[i + 2]:
			flag = 1
	for i in range(1, n - 2):
		if s[i] != s[i + 2]:
			flag = 1
if s[0] == s[n - 1]:
	flag ^= 1
print('First' if flag == 1 else 'Second')


s = input()
count = 0
player = ['First', 'Second']
ans = 0
while ans == 0:
	if len(s) == 2:
		ans = player[(count + 1) % 2]
	else:
		for i in range(1, len(s) - 1):
			if s[i - 1] != s[i + 1]:
				s = s[:i] + s[i + 1:]
				break
		else:
			ans = player[(count + 1) % 2]
	count += 1
print(ans)


s = input()
if s[0] == s[-1]:
	if len(s) % 2:
		ans = 'Second'
	else:
		ans = 'First'
elif len(s) % 2:
	ans = 'First'
else:
	ans = 'Second'
print(ans)


s = input()

def solve(s):
	if s[0] == s[-1]:
		A = 1
	else:
		A = 0
	if len(s) % 2 == 0:
		B = 1
	else:
		B = 0
	if A + B == 1:
		return 'Second'
	else:
		return 'First'
print(solve(s))


s = input()
ans = len(s) & 1
if (s[0] == s[-1]) ^ ans:
	print('First')
else:
	print('Second')


S = list(str(input()))
Slen = len(S)
fro = S[0]
bac = S[-1]
if fro == bac:
	if Slen % 2 == 0:
		print('First')
	else:
		print('Second')
elif Slen % 2 == 0:
	print('Second')
else:
	print('First')