I just came through this question , and I could not think any better approach for other than bruteforce Given a 2D array of chars and a raw list of valid words.
1) Find all the valid words from the array. From each element in the array, you can traverse up, down, right or left.
Eg,

```
g o d b o d y
t a m o p r n 
u i r u s m p

```

valid words from the above 2D array -> god, goat, godbody, amour,....