Sample output. The program produces a series of diagram telling the user which block to move next and to which position (the capitalized block moved last). Doesn't work too well on boards with many moves, needs improvement.
╔═══╦═══╦═══╦═══════════╗
║aaa║ ║bbb║ccccccccccc║
║aaa║ ║bbb╠═══╦═══════╣
║aaa║ ║bbb║ddd║ ║
║aaa╠═══╩═══╣ddd║ ╔═══╣
║aaa║███████║ddd║ ║iii║
╠═══╩═══╦═══╩═══╣ ║iii║
║eeeeeee║fffffff║ ║iii║
╠═══════╬═══════╣ ║iii║
║ggggggg║hhhhhhh║ ║iii║
╠═══════╩═══════╝ ╚═══╣
║ ║
╚═══════════════════════╝