#include <iostream>
#include <string>

void print_combinations(const std::string& s)
{
    if (s.size() >= 32) {
        return; // String too long
    }
    std::uint32_t end = 1u << s.size();
    for (std::uint32_t i = 0; i != end; ++i)
    {
        auto j = i;
        std::cout << "- ";
        for (const auto c : s)
        {
            if ((j & 1) != 0) {
                std::cout << c;
            }
            j >>= 1;   
        }
        std::cout << std::endl;
    }
}

int main()
{
    print_combinations("abcd");
}
