Логирование времени выполнения для отладки
Создал обертку над вариантами расположения ячеек.
Кроссворд теперь выполняет поиск вариантов один раз (заметно сократилось время решения т.к. алгоритм O(e^N) выполняется только на первой итерации подбора)
Выпилен неиспользуемый код