func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1000;   const double eps = 1e-9;   long long INF = 1e9;   const int OO = 0x3f3f3f3f;   int dx[] = {1, -1, 0, 0, 1, -1, 1, -1};   int dy[] = {0, 0, 1, -1, 1, -1, -1, 1};   bool comp(pair<int, int> a, pair<int, int> b) {     if (a.first < b.first)       return true;     else if (a.first > b.first)       return false;     else       return a.first < b.first;   }   void read(string str, int node) {     stringstream ss;     int number;     ss << str;     while (ss >> number) cout << number << endl;   }   long long fp(long long b, long long p) {     if (p == 0) return 1;     if (p % 2 == 0) return fp((b * b) % INF, p / 2);     return (fp(b, p - 1) * b) % INF;   }   unsigned long long read_binary(string s) {     unsigned long long x = 0, tmp = 1;     for (int i = s.size() - 1; i >= 0; i--) {       x = (x + tmp * (s[i] -  0 )) % INF;       tmp = (tmp * 2) % INF;     }     return x;   }   long long com(long long x, long long y) {     long long sum = 1;     for (int i = 1; i <= y; i++) {       sum *= x;       x--;       sum /= i;     }     return sum;   }   long long gcd(long long n1, long long n2) {     if (n2 != 0)       return gcd(n2, n1 % n2);     else       return n1;   }   int setBit(int num, int idx, int val = 1) {     return (val) ? (num | (1 << idx)) : (num & ~(1 << idx));   }   int getBit(int num, int idx) { return ((num >> idx) & 1) == 1; }   int cntBit(int num) {     int ret = 0;     while (num) {       if (num % 2) ret++;       num /= 2;     }     return ret;   }   bool sum[1500];   void sieve() {     sum[0] = sum[1] = 1;     for (int i = 2; i * i < 1002; i++) {       if (!sum[i]) {         for (int j = 2 * i; j < 1002; j += i) {           sum[j] = 1;         }       }     }   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     ;     long long n;     cin >> n;     string s = to_string(n);     long long mi = INF;     for (int i = 0; i < (1 << s.size()); ++i) {       int cnt = 0;       string k;       for (int j = 0; j < s.size(); j++) {         if (i & (1 << j)) {           k += s[j];           cnt++;         }       }       if (k[0] ==  0 ) continue;       long long val;       istringstream ss(k);       ss >> val;       double d = sqrt(val);       int ii = sqrt(val);       if (d == ii) {         mi = min(mi, (long long)s.size() - cnt);       }     }     if (mi == INF)       cout << -1 << endl;     else       cout << mi << endl;   }   