I store all the words in the dictionary in an array and ignore words of more than 7 letters.
.. And then for every puzzle I generate all the permutation of different lengths and see if it exists in the dictionary. I also ensure that a word is not repeated..
.. is there anything wrong with this approach.
One more thing : I got WA in around 2.3 seconds , but I saw people getting AC in less then 0.1 seconds.. so I think I am missing something very obvious.
Is there anything special that I have to consider?

