← Home
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())

	basis := make([]int, 30)
	sz := 0
	cur := 0

	for i := 0; i < n; i++ {
		scanner.Scan()
		x, _ := strconv.Atoi(scanner.Text())
		cur ^= x

		v := cur
		for j := 29; j >= 0; j-- {
			if (v & (1 << j)) != 0 {
				if basis[j] == 0 {
					basis[j] = v
					sz++
					break
				}
				v ^= basis[j]
			}
		}
	}

	if cur == 0 {
		fmt.Println("-1")
	} else {
		fmt.Println(sz)
	}
}