solve challenging puzzles