func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 1e5 + 5;   int n, k, sz, trie[MAX][26];   bool win[MAX], lose[MAX];   char s[MAX];   void dfs(int u) {     int ady = 0;     for (int i = 0; i < 26; i++) {       if (trie[u][i] == 0) continue;       ady++;       int v = trie[u][i];       dfs(v);       win[u] |= !win[v];       lose[u] |= !lose[v];     }     if (ady == 0) {       win[u] = 0;       lose[u] = 1;     }   }   int main() {     scanf( %d%d , &n, &k);     for (int i = 1; i <= n; i++) {       scanf( %s , s);       int l = strlen(s);       int r = 0;       for (int i = 0; i < l; i++) {         int c = s[i] -  a ;         if (trie[r][c] == 0) trie[r][c] = ++sz;         r = trie[r][c];       }     }     dfs(0);     if (win[0] && lose[0])       printf( First n );     else if (win[0] && !lose[0]) {       if (k & 1)         printf( First n );       else         printf( Second n );     } else if (!win[0] && lose[0])       printf( Second n );     else       printf( Second n );     return 0;   }   