@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Board))
			return false;
		Board other = (Board) obj;
		if (N != other.N)
			return false;
		if (hamming != other.hamming)
			return false;
		if (manhattan != other.manhattan)
			return false;
		if (!Arrays.deepEquals(tiles, other.tiles))
			return false;
		return true;
	}