Try this ! : Sliding block puzzle (Taken from quzzle )

The above diagram shows a 4x5 size board covered by blocks
of different sizes . The idea is to move the blocks (in the same
plane , obviously ) so that finally the 2x2 square comes to
bottom right corner .

Write a computer program to solve this (or to prove that it is unsolvable).