public int TransfersCount(string from, string to)
        {
            if (from.Equals(to))
            {
                return(0);
            }

            var fromOrbit = GetOrbitByName(from);
            var toOrbit   = GetOrbitByName(to);

            var fromOrbitCounters = new OrbitCounter(Orbits, Root, fromOrbit);
            var toOrbitCounters   = new OrbitCounter(Orbits, Root, toOrbit);

            int?minTransfers = null;

            foreach (var aOrbit in fromOrbitCounters.ConnectedOrbits.Keys)
            {
                if (toOrbitCounters.ConnectedOrbits.ContainsKey(aOrbit))
                {
                    var transfers =
                        fromOrbitCounters.ConnectedOrbits[from] - fromOrbitCounters.ConnectedOrbits[aOrbit] - 1
                        +
                        toOrbitCounters.ConnectedOrbits[to] - toOrbitCounters.ConnectedOrbits[aOrbit] - 1;
                    if (minTransfers == null || minTransfers > transfers)
                    {
                        minTransfers = transfers;
                    }
                }
            }
            if (minTransfers.HasValue)
            {
                return(minTransfers.Value);
            }
            throw new Exception($"Can't tranfser from {from} to {to}");
        }
        private int TotalNumberOfOrbits(Orbit orbit)
        {
            var counter = new OrbitCounter(Orbits, Root, orbit);

            System.Diagnostics.Debug.WriteLine($"{orbit.Name}: {counter.Count}");
            return(counter.Count);
        }
        public int TotalNumberOfOrbits()
        {
            Console.WriteLine($"Total number of orbits: {Orbits.Values.Count}");
            //return Orbits.Values.Sum(o => o.CountConnections);
            var count = 0;
            var list  = new Dictionary <string, OrbitCounter>();

            foreach (var orbit in Orbits.Values)
            {
                var orbitCounter = new OrbitCounter(Orbits, Root, orbit);
                Console.WriteLine($"{orbit.Name}: {orbitCounter.Count}");
                list[orbit.Name] = orbitCounter;
                count           += orbitCounter.Count;
            }
            return(count);
            //return Orbits.Values.Sum(orbit => TotalNumberOfOrbits(orbit));
        }