public string SolutionOpt(FullCube c, int maxl)
        {
            _c         = c;
            _solString = null;
            var shape = c.GetShapeIdx();

            for (_length1 = Shape.ShapePrunOpt[shape]; _length1 <= maxl; _length1++)
            {
                if (Phase1Opt(shape, _length1, 0, -1))
                {
                    break;
                }
            }
            return(_solString);
        }
        public string Solution(FullCube c)
        {
            _c         = c;
            _solString = null;
            var shape = c.GetShapeIdx();

            for (_length1 = Shape.ShapePrun[shape]; _length1 < 100; _length1++)
            {
                _maxlen2 = Math.Min(31 - _length1, 17);
                if (Phase1(shape, Shape.ShapePrun[shape], _length1, 0, -1))
                {
                    break;
                }
            }
            return(_solString);
        }