プログラムのどこかに関数があります
for (int i = 0; i < 4; i++) if (!(mask & 1 << i))
{
   string tmp = s;
   b[i](tmp);
   mask |= 1 << i;
   generate(tmp, mask, count - 1);
}
ただし、(おそらく)同じものを1つ変更すると、コードは本来のようにはなりません。
代わりに
mask |= 1 << i;
generate(tmp, mask, count - 1);
私は書きます  generate(tmp, mask | (1 << i), count - 1)