#include <bits/stdc++.h>
using namespace std;
set<string> ans, vis;
struct node {
  string ss;
  int s;
};
int bfs(string a) {
  queue<node> q;
  node x, y;
  x.ss = a;
  x.s = 0;
  q.push(x);
  while (!q.empty()) {
    y = q.front();
    q.pop();
    if (ans.count(y.ss)) return y.s;
    string tt;
    for (int i = 0; i < y.ss.size(); i++) {
      tt = "";
      for (int j = 0; j < y.ss.size(); j++) {
        if (j != i) tt += y.ss[j];
      }
      if (vis.count(tt) == 0) {
        x.ss = tt;
        x.s = y.s + 1;
        vis.insert(tt);
        q.push(x);
      }
    }
  }
  return -1;
}
int main() {
  string n, str;
  long long t, xx, i;
  for (i = 1; i < 100000; i++) {
    t = i * i;
    stringstream ss;
    ss << t;
    ss >> str;
    ans.insert(str);
  }
  cin >> n;
  vis.insert(n);
  xx = bfs(n);
  cout << xx << endl;
  return 0;
}
