func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 10;   int f[1 << 6], ff[1 << 6], g[1 << 6], gg[1 << 6];   int b[N];   char s[N], w[100];   int n, m;   bool check() {     for (int i = 1; i < (1 << 6); i++) gg[i] = gg[i - (i & -i)] + g[i & -i];     for (int i = 1; i < (1 << 6) - 1; i++)       if (gg[i] > f[i] || ff[i] > gg[i]) return 0;     return 1;   }   int main() {     scanf( %s , s + 1);     n = strlen(s + 1);     for (int i = 1; i <= n; i++) g[1 << (s[i] -  a )]++;     scanf( %d , &m);     for (int i = 1; i <= m; i++) {       int x, y, z = 0;       scanf( %d %s , &x, w);       y = strlen(w);       for (int j = 0; j < y; j++) z |= (1 << (w[j] -  a ));       for (int j = 0; j < (1 << 6); j++) {         if (j & z) f[j]++;         if ((j & z) == z) ff[j]++;       }       b[x] = z;     }     for (int i = 1; i <= n; i++)       if (!b[i]) {         ff[b[i] = (1 << 6) - 1]++;         for (int j = 0; j < (1 << 6); j++) f[j]++;       }     if (!check()) {       printf( Impossible n );       return 0;     }     for (int i = 1; i <= n; i++) {       for (int j = 0; j < (1 << 6); j++) {         if (j & b[i]) f[j]--;         if ((j & b[i]) == b[i]) ff[j]--;       }       for (int j = 0; j < 6; j++)         if (g[1 << j] && ((b[i] >> j) & 1)) {           g[1 << j]--;           if (check()) {             printf( %c , j +  a );             break;           }           g[1 << j]++;         }     }     return 0;   }   