from helmig http://bryanhelmig.com/python-crossword-puzzle-generator/