/
b.go
50 lines (45 loc) · 769 Bytes
/
b.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
. "fmt"
"io"
"math/bits"
"os"
"strconv"
)
// github.com/EndlessCheng/codeforces-go
func run(in io.Reader, out io.Writer) {
sq := map[int]bool{}
for i := 1; i*i <= 2e9; i++ {
sq[i*i] = true
}
var T int
var s string
for Fscan(in, &T); T > 0; T-- {
Fscan(in, &s)
ans := 99
for i := uint(1); i < 1<<len(s); i++ {
if s[bits.TrailingZeros(i)] == '0' {
continue
}
t := []byte{}
for j := i; j > 0; j &= j - 1 {
t = append(t, s[bits.TrailingZeros(j)])
}
v, _ := strconv.Atoi(string(t))
if sq[v] {
ans = min(ans, len(s)-len(t))
}
}
if ans == 99 {
ans = -1
}
Fprintln(out, ans)
}
}
func main() { run(os.Stdin, os.Stdout) }
func min(a, b int) int {
if a < b {
return a
}
return b
}