func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double eps = 1e-13;   const long double PI = acos(-1);   const int INF = (int)1e9;   const long long INFF = (long long)1e18;   const int mod = (int)1e9 + 7;   const int MXN = (int)2e5 + 7;   char s[MXN];   int cnt[MXN];   int num[MXN], num2[MXN], a[MXN];   bool check() {     for (int i = 0; i < 1 << 6; i++) num2[i] = num[i];     for (int i = 0; i < 6; i++) {       for (int j = 0; j < 1 << 6; j++) {         if (j & (1 << i)) num2[j] += num2[j ^ (1 << i)];       }     }     for (int i = 0; i < 1 << 6; i++) {       int sum = 0;       for (int j = 0; j < 6; j++)         if (i & (1 << j)) sum += cnt[j];       if (sum < num2[i]) return false;     }     return true;   }   char ans[MXN];   int main() {     scanf( %s , s + 1);     int l = strlen(s + 1);     for (int i = 1; s[i]; i++) {       cnt[s[i] -  a ]++;       a[i] = (1 << 6) - 1;     }     int m;     scanf( %d , &m);     while (m--) {       int p;       scanf( %d %s , &p, s + 1);       a[p] = 0;       for (int i = 1; s[i]; i++) a[p] ^= (1 << (s[i] -  a ));     }     for (int i = 1; i <= l; i++) {       num[a[i]]++;     }     for (int i = 1; i <= l; i++) {       num[a[i]]--;       for (int j = 0; j < 6; j++) {         if (!cnt[j] || !(a[i] & (1 << j))) continue;         cnt[j]--;         if (check()) {           ans[i] = j +  a ;           break;         } else {           cnt[j]++;         }       }       if (!ans[i]) {         puts( Impossible );         return 0;       }     }     printf( %s n , ans + 1);     return 0;   }   