Dictionary algorithm, computing all case options
You are absolutely correct - it is binary counting. In the case of antidiseastablismnetarianism you'd need to produce \$2^{28}\$ words, that is quite a few. No surprise you are stuck, but unfortunately there is no real way around.

You may streamline the word generation a bit (most likely it wouldn't affect the bottom line) by doing a more natural binary counting. For example,

    int length = 1 &lt;&lt; word.length;

    for (int counter = 0; counter &lt; length; ++counter) {
        for (int pos = 0; pos &lt; word.length; ++pos) {
            binaryList[pos][counter] = (counter &amp; (1 &lt;&lt; pos))?
                toUpper(word[pos]): toLower(word[pos]);
        }
    }