ignore swp files
add hashes into Board and Block
don't record the lower right index to shrink the size of object
BFS with checking repeated states