Säännöt

Wundercube in English

You might have played the following game: You are given a 4x4 grid of letter squares and you have to find as many words as possible in a certain time by connecting adjacent squares (two squares touching each other's corners are also considered adjacent). A square cannot be used multiple times in a word. Squares at the opposite edges are not considered adjacent.

For example, a (Finnish) word KANKI can be found in the following grid:

R S I UE K U VO N N AP E K S

Some mobile games have also been created with the same idea: Sanajahti (Finnish dictionary) and Wordament (English dictionary), for example.

Let's add some difficulty to the game by finding words in a letter cube instead of a letter grid! That is to say, this time the wunderpuzzle is to write a program that finds all the words in the given 4x4x4 letter cube, constructed of adjacent cube-shaped letter blocks. Thus, each one of the 64 letter blocks represents one letter. Blocks that touch each other at least at their corners, are counted as adjacent. At maximum, a letter block has 26 adjacent blocks. The list of valid words can be found here (Source: Kotus-sanalista).

Move the mouse pointer on the different layers of the cube to see the letters. For the sake of clarity, only the top facets of the letter blocks (cubes) are visible. A copy-paste version of the letters can be found here.

Rules

You can use any programming language to solve the problem.

Solution must work properly and output the correct answer. (Pro tip: Brute force solution is not very elegant.)