#nullable enable #region var _input = Array.Empty(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return _input[_iter++]; } T I() where T : IParsable => T.Parse(String(), null); #endregion T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); string Join(IEnumerable values, bool ws = false) => string.Join(ws ? " " : Environment.NewLine, values); var sqrts = new Dictionary(); for (var i = 1L; i <= 1000000; i++) { var s = (i * i).ToString().Where(c => c != '0').Order().ToArray(); var sn = long.Parse(new string(s)); if (!sqrts.ContainsKey(sn)) sqrts[sn] = i; } var t = I(); var ans = new long[t]; ans.AsSpan().Fill(-1); for (var i = 0; i < t; i++) { var ns = String().Where(c => c != '0').Order().ToArray(); var n = long.Parse(new string(ns)); if (sqrts.TryGetValue(n, out var v)) ans[i] = v * v; } Console.WriteLine(Join(ans));