I love puzzles. This is described by Alex Bellos at the Guardian.

It helps to write a spreadsheet to solve this.

- Set the column widths to be about the same as the height, making them look square.
- Draw out the puzzle by highlighting a phrase (there are 12 "phrases"), and formatting: format cells, borders, click outline, OK.
- Repeat for each of the other 11 phrases, highlight, Ctrl-Y (repeats the last format command for a new area)
- Count the lengths of the rectangles (these are "phrase length"), subtract (3 or 2) to get "word length"
- The area inside the blue box is named "puzzle"
- The formula (row 20) for "actual" is: = SUMPRODUCT( LEN(puzzle) - LEN( SUBSTITUTE(puzzle,"e","") ))
- This formula is copied for the 11 rows below and the letter edited, each time.
- The formula for "= target" is: =IF( E20 = F20, "Y", "N")
- When they all show "Y", the puzzle is solved.
- The sum in cell e32 just tallies the 12 "actual" numbers. It must eventually show 68 when the puzzle is solved
- The working between p18 : ae32 allows one to count the number of times each number word is used and tally them (must be = 68 too)
- The cells bordered in red are named: number
- The "word cells" formula is just: = number * R19
- This formula is copied down and across (to the 3 combos). The "3 combos" show the 3 possible combinations of possible words.
- The "# letters" fomula is just the length of the number. e.g.: = LEN( AD20 )

This is not so easy to solve using purely coded program, because the rules to narrow down the combinations are not so clear. After you've figured out what constraints must be met it, no doubt, becomes much easier to program.