func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, k, trie[100100][27], sz = 1, ok[2][100100];   char s[100100];   void add() {     int v = 0;     for (int i = 0; s[i] !=   0 ; i++) {       if (trie[v][s[i] -  a ] == 0) trie[v][s[i] -  a ] = sz++;       v = trie[v][s[i] -  a ];     }   }   void calc(int v, bool bo, int temp[30]) {     int arr[5];     for (int i = 0; i < 5; i++) arr[i] = 0;     for (int i = 0; i < 26; i++) {       if (temp[i] == -1) continue;       if (temp[i] == 0) {         ok[bo][v] = 0;         break;       }       if (temp[i] == 1) {         if (arr[2]) {           ok[bo][v] = 0;           break;         }       }       if (temp[i] == 2) {         if (arr[1]) {           ok[bo][v] = 0;           break;         }       }       arr[temp[i]]++;     }     if (ok[bo][v] != 0)       ok[bo][v] = (arr[3] && !arr[1] && !arr[2] ? 3 : (arr[1] ? 1 : 2));   }   int dfs(int v, bool st, bool bo) {     int cnt = 0, temp[26];     for (int i = 0; i < 26; i++) temp[i] = -1;     for (int i = 0; i < 26; i++) {       if (!trie[v][i]) continue;       cnt++;       temp[i] = dfs(trie[v][i], !st, bo);       if (temp[i] == 1)         ok[bo][v] = (ok[bo][v] < 2 ? 1 : 3);       else if (temp[i] == 2)         ok[bo][v] = (ok[bo][v] == 2 || ok[bo][v] == 0 ? 2 : 3);       else if (temp[i] == 3)         ok[bo][v] = 3;     }     if (cnt > 1 && !st && !bo) calc(v, bo, temp);     if (cnt > 1 && st && bo) calc(v, bo, temp);     if (cnt == 0) ok[bo][v] = (st ? 2 : 1);     return ok[bo][v];   }   int main() {     scanf( %d%d , &n, &k);     for (int i = 0; i < n; i++) {       scanf( %s , &s);       add();     }     dfs(0, 1, 0);     dfs(0, 1, 1);     if (ok[0][0] == 3)       printf( First n );     else if (ok[0][0] == 1) {       if (k % 2)         printf( First n );       else         printf( Second n );     } else if (ok[0][0] == 2)       printf( Second n );     else {       if (ok[1][0] == 3)         printf( Second n );       else if (ok[1][0] == 1) {         if (k % 2)           printf( First n );         else           printf( Second n );       } else if (ok[1][0] == 2)         printf( Second n );     }     return 0;   }   