Частотный криптоанализ шифра Цезаря C#

Здравствуйте) Очень нужна помощь с одной мудреной программкой, реализующей частотный криптоанализ для шифротекстов, зашифрованных шифром Цезаря. Как я поняла, суть заключается в том, что эта программа сама должна угадать ключ сдвига, сравнив частоту встречаемости символов в зашифрованном тексте с эталонными частотами…Прошу подскажите, как это можно сделать? Вот наработочки…

using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
namespace Крип2
{
    class Program
    {    //алфавит мощностью 26 (массив 25)
        static string A = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        private string CodeEncode(string s, int k)
        {
            var letterQty = A.Length;
            var retVal = "";
            for (int i = 0; i < s.Length; i++)
            {
                var c = s[i];
                var index = A.IndexOf(c);
                if (index < 0)
                {
                    //если символ не найден, то добавляем его как символ открытого текста
                    retVal += c.ToString();
                }
                else
                {
                    var codeIndex = (letterQty + index + k) % letterQty;
                    retVal += A[codeIndex];
                }
            }

            return retVal;
        }

        //Дешифрование
        public string Decrypt(string s, int k)
            => CodeEncode(s, -k);
        //словарь частоты встречаемости символов
        private static Dictionary<string, double> symbols = new Dictionary<string, double>()
        {
            ["A"] = 0.082,
            ["B"] = 0.015,
            ["C"] = 0.028,
            ["D"] = 0.043,
            ["E"] = 0.130,
            ["F"] = 0.022,
            ["G"] = 0.020,
            ["H"] = 0.061,
            ["I"] = 0.070,
            ["J"] = 0.002,
            ["К"] = 0.008,
            ["L"] = 0.040,
            ["M"] = 0.024,
            ["N"] = 0.067,
            ["O"] = 0.075,
            ["P"] = 0.019,
            ["Q"] = 0.001,
            ["R"] = 0.060,
            ["S"] = 0.063,
            ["T"] = 0.091,
            ["U"] = 0.028,
            ["V"] = 0.010,
            ["W"] = 0.024,
            ["X"] = 0.001,
            ["Y"] = 0.020,
            ["Z"] = 0.001
        };
        static void Main()
        {
            // Массив для хранения частот
            int[] c = new int[(int)char.MaxValue];
            string g = File.ReadAllText("text.txt");
            string s = g.Replace(" ", "");
            foreach (char t in s)
            { 
                c[(int)t]++;
            }
            // Частотный анализ
            for (int i = 0; i < (int)char.MaxValue; i++)
            { 
           
               if (c[i] > 0 && char.IsLetterOrDigit((char)i))
            {
                 Console.WriteLine("Буква: {0}  Частота: {1}",  (char)i, Math.Round(((double)c[i] / (double)s.Length ), 3));
             }
          }
        }
    }
}

Заранее зашифрованный Цезарем текст в документе ( ключ сдвига 11, его должна угадать программа).
text.txt (805 Байт)