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)
}
}