Label the blocks A (lowest) to D (highest).

Let [1] = E-S-E-SSS-WW-S-E-N-W-N, and (-1) be its inverse.

Let [2] = WW-S-W-N-EEE.

Let [3] = W-NN-E-N-EEEE-SSSS-W-N-E-S-WWWW.

Then the solution is:

A: E-S-E-N-E-NNN-W-N-WWW-S
B: W-S-E
A: N-E
B: N-W-S
A: E-S
B: EE
A: N-[1]
B: SS-W
C: S-W-N
B: E-N
C: E-S-W
B: N
A: [-1]-S
B: W
C: N-E-S
B: N-W
A: N-[2]-S
B: EE-S
A: N-[-2]-EE-SSSS-W-N-E-NNN-WWW-S
C: NE
A: N-EEE-SSS-W-SS-E-N-WW-N
C: S-W
A: SS-E-N-W-N
B: S
D: WW
B: N
A: [-1]-[2]-S
B: N-WW
A: N-[-2]-S
B: E-S-E
A: N-[1]
B: SS-WW-S-W
A: [-1]-WW-S-W-SS-E
B: N-E
A: [3]
B: SS-W
A: [-3]
B: NN
D: W
C: N
D: N-E