What I most hated about the puzzle was the fact that the choice of which row/column could be switched was chosen randomly whenever you moved. This made it nearly impossible for me to try to solve it because whenever I wanted to try something I often ended up losing my patience and just accepting whatever was chosen after a couple of tries, so I ended up just wasting a lot of time going nowhere.
Then I tried doing the same thing by hand on paper, such as figuring out the combination to transpose two adjacent tiles while keeping the rest intact. (I also tried a few short unsuccessful things for a bit)
Eventually I reached that conclusion that if I was going to put any effort into a brute force method, it should be be reasonably efficient. So I wrote a script in Python, and after figuring out a decent implementation of the algorithm, I finally solved it after only a few days of working on it.
(For the record, I only dabble in programming every now and then, so while I know quite a bit, I lack much actual experience.)
This is the guaranteed shortest solution -- though in retrospect not necessarily the fastest because of the random element with the switching part.
Just in case someone doesn't want it spoiled or whatever; highlight this to see it:
switch top, switch left, switch right, move up, switch right, move right, switch bottom, switch right, move down, switch top, switch bottom, switch left