title: Connect-three puzzle solveability
body: <p>I'm writing a casual connect-three type game that uses a square grid. The player slides a row or column around (essentially rotating it in 1D) to put at least three blocks of the same type together to make a match.</p>
  
  <p>Because the level of difficulty will increase as play goes on, there will come a point (I have checked, it is possible) for there to be no moves that will result in a new match.</p>
  
  <p>Aside from using the brute-force method (which is at least O(N^2) time), is there a faster method of looking for possible moves?</p>