static string ZeroToTwentyToChar(int ten, int unity)
        {
            if (ten == 0)
            {
                return(FrenchNumbers.UnityToChar(unity));
            }

            if (ten == 1)
            {
                if (unity > 6)
                {
                    return($"dix-{FrenchNumbers.UnityToChar(unity)}");
                }
                return(FrenchNumbers.TenToFifteenToChar(unity));
            }
            return(null);
        }
        static string TenUnityToChar(int ten, int unity)
        {
            if (unity == 0 && ten == 0)
            {
                return(string.Empty);
            }

            string result = ZeroToTwentyToChar(ten, unity);

            if (!string.IsNullOrEmpty(result))
            {
                return(result);
            }

            if (unity == 1)
            {
                if (unity == 7)
                {
                    return($"{FrenchNumbers.TenToChar(ten)} et {ZeroToTwentyToChar(ten, unity)}");
                }
                if (unity > 7)
                {
                    return($"{FrenchNumbers.TenToChar(ten)}-{ZeroToTwentyToChar(ten, unity)}");
                }
                return($"{FrenchNumbers.TenToChar(ten)} et un");
            }

            if (unity == 0)
            {
                return(FrenchNumbers.TenToChar(ten));
            }

            if (ten > 6)
            {
                return($"{FrenchNumbers.TenToChar(ten - (ten % 2 == 0 ? 0 : 1))}-{ZeroToTwentyToChar(ten % 2 == 0 ? 0 : 1, unity)}");
            }
            return($"{FrenchNumbers.TenToChar(ten)}-{FrenchNumbers.UnityToChar(unity)}");
        }
        static string ToChar(int number)
        {
            string numberStr  = number.Reverse();
            string numberChar = string.Empty;

            if (numberStr.Length == 1)
            {
                return(FrenchNumbers.UnityToChar(number));
            }

            for (int i = 0; i < numberStr.Length; i++)
            {
                if ((i + 1) % 2 == 0)
                {
                    int unity = numberStr.ElementAt(i - 1).ToInt();
                    int ten   = numberStr.ElementAt(i).ToInt();
                    numberChar = TenUnityToChar(ten, unity) + numberChar;
                }

                if ((i + 1) % 3 == 0)
                {
                    int hundred = int.Parse(new string(new[] { numberStr.ElementAt(i) }));

                    if (hundred == 1)
                    {
                        numberChar = "cent" + (string.IsNullOrEmpty(numberChar) ? numberChar : $" {numberChar}");
                    }
                    else
                    {
                        numberChar = $"{FrenchNumbers.UnityToChar(hundred)}-cent" + (string.IsNullOrEmpty(numberChar) ? numberChar : $"-{numberChar}");
                    }
                }
            }

            return(numberChar);
        }