package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
n := nextInt()
var basis [31]int
rank := 0
cur := 0
for i := 0; i < n; i++ {
cur ^= nextInt()
x := cur
for b := 30; b >= 0; b-- {
if ((x >> b) & 1) == 0 {
continue
}
if basis[b] == 0 {
basis[b] = x
rank++
break
}
x ^= basis[b]
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
if cur == 0 {
fmt.Fprint(out, -1)
} else {
fmt.Fprint(out, rank)
}
}