Andrew, Fedor and Alex are inventive guys. Now they invent the game with strings for two players.

Given a group of n non-empty strings. During the game two players build the word together, initially the word is empty. The players move in turns. On his step player must add a single letter in the end of the word, the resulting word must be prefix of at least one string from the group. A player loses if he cannot move.

Andrew and Alex decided to play this game k times. The player who is the loser of the i-th game makes the first move in the (i + 1)-th game. Guys decided that the winner of all games is the player who wins the last (k-th) game. Andrew and Alex already started the game. Fedor wants to know who wins the game if both players will play optimally. Help him.


-----Input-----

The first line contains two integers, n and k (1 ≤ n ≤ 10^5; 1 ≤ k ≤ 10^9).

Each of the next n lines contains a single non-empty string from the given group. The total length of all strings from the group doesn't exceed 10^5. Each string of the group consists only of lowercase English letters.


-----Output-----

If the player who moves first wins, print "First", otherwise print "Second" (without the quotes).


-----Examples-----
Input
2 3
a
b

Output
First

Input
3 1
a
b
c

Output
First

Input
1 2
ab

Output
Second

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = 'N = 100000\nZ = 26\n\n#别用这玩意儿: trie = [[0] * Z] * N 巨坑！https://www.cnblogs.com/PyLearn/p/7795552.html\n\ntrie = [[0 for i in range(Z)] for j in range(N)]\nn = 0\nk = 0\nnodeNum = 0\n\ndef insertNode():\n\tu = 0\n\tstring = input()\n\tnonlocal nodeNum\n\t\n\tfor i in range(len(string)):\n\t\tc = ord(string[i]) - ord(\'a\')\n\t\tif trie[u][c] == 0:\n\t\t\tnodeNum += 1\n\t\t\ttrie[u][c] = nodeNum\t\n\t\tu = trie[u][c]\n\t\t# print(u)\n\t\nstateWin = [False for i in range(N)]\t\nstateLose = [False for i in range(N)]\t\n\t\ndef dfs(u):\n\tleaf = True\n\tfor c in range(Z):\n\t\tif (trie[u][c]) != 0:\n\t\t\tleaf = False\n\t\t\tdfs(trie[u][c])\n\t\t\tstateWin[u] |= (not(stateWin[trie[u][c]]))\n\t\t\tstateLose[u] |= (not(stateLose[trie[u][c]]))\n\tif leaf == True:\n\t\tstateWin[u] = False\n\t\tstateLose[u] = True\n\nn,k = map(int,input().split())\n\nfor i in range(n):\n\tinsertNode()\n\ndfs(0)\n\n\n# print(stateWin[0])\n# print(stateLose[0])\n\nif (stateWin[0] and (stateLose[0] or (k % 2 == 1) )):\n\tprint("First")\nelse:\n\tprint("Second")'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: