Consider the following strings
'dcabab',
'cdabab',
'dacbab',
'adcbab',
'cadbab',
'acdbab',
'dbacab',
'bdacab',
'dabcab',
'adbcab',
'badcab',
'abdcab',
'cbadab',
'bcadab',
'cabdab',
'acbdab',
'bacdab',
'abcdab',
'dabacb',
'adbacb',
'badacb',
'abdacb',
'adabcb',
'abadcb',
'cabadb',
'acbadb',
'bacadb',
'abcadb',
'acabdb',
'abacdb',
'cababd',
'acbabd',
'bacabd',
'abcabd',
'abacbd',
'ababcd'
If you are currently at one of those strings, you can attempt to make another one by swapping any pairs of characters. For example, you can go from 'dcabab' to 'cdabab' by swapping the first two characters. This is good because the characters that are swapped are right next to each other, that is of distance one.
The puzzle
Find a way to go from one of the strings of your choosing to all the other strings by doing one swap per new string. That is start at a string, do one swap making a new string from the list, then do another swap from the new string making another string from the list and so on. You must only ever visit strings from the list.
For those who like graphs, you can think of the strings as forming nodes in a graph and two nodes being connected by an edge if you can get from one string to another by a single swap.
Your goal is to make the distance between characters that you swap as small as possible. If you only ever need to swap adjacent characters then you have perfect solution.
If it can't be done, please explain why.