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 ≤ 105; 1 ≤ k ≤ 109).

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 105. 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
/*
If you want to aim high, aim high
Don't let that studying and grades consume you
Just live life young
******************************
If I'm the sun, you're the moon
Because when I go up, you go down
*******************************
I'm working for the day I will surpass you
https://www.a2oj.com/Ladder16.html
*/
import java.util.*;
import java.io.*;
import java.math.*;

   public class x455B
   {
      public static void main(String omkar[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));  
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         int K = Integer.parseInt(st.nextToken());
         String[] arr = new String[N];
         for(int i=0; i < N; i++)
            arr[i] = infile.readLine();
         //oh my Omkar
         Trie root = new Trie();
         for(String s: arr)
         {
            Trie curr = root;
            for(char c: s.toCharArray())
            {
               if(curr.children[c-'a'] == null)
                  curr.children[c-'a'] = new Trie();
               curr = curr.children[c-'a'];
            }
         }
         boolean canWin = dfs1(root);
         boolean canLose = dfs2(root);
         if(!canWin)
            System.out.println("Second");
         else if(canWin && canLose)
            System.out.println("First");
         else
         {
            if(K%2 == 0)
               System.out.println("Second");
            else
               System.out.println("First");
         }
      }
      public static boolean dfs1(Trie curr)
      {
         //guarantree win at curr if one loses in children
         boolean temp = false;
         boolean leaf = true;
         for(Trie next: curr.children)
            if(next != null)
            {
               leaf = false;
               temp |= !dfs1(next);
               //temp |= !next.canWin;
            }
         if(leaf)
            return false;
         return temp;
      }
      public static boolean dfs2(Trie curr)
      {
         boolean temp = false;
         boolean leaf = true;
         for(Trie next: curr.children)
            if(next != null)
            {
               leaf = false;
               temp |= !dfs2(next);
               //temp |= !next.canLose;
            }
         if(leaf)
            return true;
         return temp;
      }
   }
   class Trie
   {
      public Trie[] children;
      //dp states
      boolean canWin;
      boolean canLose;
      
      public Trie()
      {
         children = new Trie[26];
      }
   }