Разбор добавил Александр Чистяков
Заметим, что данные строки являются двоичными записями чисел от 0 до (2^N)-1. Поэтому, чтобы их вывести, достаточно перебрать числа от 0 до (2^N)-1 и каждое из них вывести в двоичном формате с ведущими нулями.