func_code_string: #include <bits/stdc++.h>   using namespace std;   typedef struct trie {     char c;     bool win, lose;     struct trie *alphabet[26];   } trie;   void addString(trie *T, char *s);   trie *initTrie(char c);   void dfs(trie *T);   int main() {     int i, n, k;     char s[100005];     trie *T = initTrie(  0 );     scanf( %d%d , &n, &k);     for (i = 0; i < n; i++) {       scanf( %s , s);       addString(T, s);     }     dfs(T);     if (!(T->win))       printf( Second n );     else if (T->win && T->lose)       printf( First n );     else if (T->win && !(T->lose)) {       if (k % 2)         printf( First n );       else         printf( Second n );     }     return 0;   }   void dfs(trie *T) {     int i, flag = 1;     for (i = 0; i < 26; i++) {       if (T->alphabet[i]) {         flag = 0;         dfs(T->alphabet[i]);         T->win |= !(T->alphabet[i]->win);         T->lose |= !(T->alphabet[i]->lose);       }     }     if (flag) {       T->win = false;       T->lose = true;     }   }   trie *initTrie(char c) {     int i;     trie *T = (trie *)malloc(sizeof(trie));     T->win = T->lose = false;     T->c = c;     for (i = 0; i < 26; i++) T->alphabet[i] = NULL;     return T;   }   void addString(trie *T, char *s) {     int len = strlen(s), i;     for (i = 0; i < len; i++) {       if (T->alphabet[s[i] -  a ] == NULL)         T->alphabet[s[i] -  a ] = initTrie(s[i]);       T = T->alphabet[s[i] -  a ];     }   }   