Simplify Nested Lists
Cases[solution, {{__Integer}..}, All]
{{{18, 11, 8}, {17, 12, 2}}, {{17, 12, 11}, {18, 8, 2}}, {{17, 11, 8}, {18, 12, 2}}, {{18, 12, 8}, {17, 11, 2}}, {{18, 12, 11}, {17, 8, 2}}, {{18, 17}, {12, 11, 8, 2}}}
If the target lists contain exactly two sublists of integers, you can also use
Partition[#, 2] & @ Cases[solution, {__Integer}, All]
Update: Few additional methods:
Level[solution, {-3}]
Fold[FlattenAt, solution, {1, 2, 2, 1}] (* inspired by cvgmt's answer *)
Fold[Delete, solution, Thread[{{1, 2, 2, 1}, 0}]]
Fold[MapAt[Splice,##]&, solution, {1, 2, 2, 1}]
It must be have an elegant way which I could not found at that moment.
solution = {{{{{18, 11, 8}, {17, 12, 2}}, {{17, 12, 11}, {18, 8, 2}}}, {{{{17, 11, 8}, {18, 12, 2}}, {{18, 12, 8}, {17, 11, 2}}}, {{18, 12, 11}, {17, 8, 2}}}}, {{18, 17}, {12, 11, 8, 2}}};
solution//TreeForm
simplified =FlattenAt[1]@
FlattenAt[2]@FlattenAt[2]@FlattenAt[1]@solution
simplified//TreeForm