StreamReader sr = new StreamReader(@"C:\Users\ilyae\OneDrive\Рабочий стол\textlab2.txt");// открываем текстовый файл // читаем первую строчку List a = new List(); // конвертируем строчку в тип "CharArray" и записываем в список List b = new List(); // создаем список для записи конечного результата List count = new List(); // создаем список для записи количества символов while (!sr.EndOfStream) // читаем файл до конца { string st = sr.ReadLine(); //читаем строчку из файла a = new List(st.ToCharArray()); //конвертируем ее в тип Char и добавляем в список for (int i = 0; i < a.Count; i++) // счётчик для списка { int k = 1; //счётчик для записи количества символом for (int j = i + 1; j < a.Count; j++) // счётчик для перебора элементов списка { if (a[i] == a[j]) // если найдены одинаковые символы, { k++; // счётчик увеличивается a.RemoveAt(j); // а элемент из второго массива удаляется. } } count.Add(k); // добавляем конечное количество символом в список } int n = b.Count - 1; // количество символов во втором списке for (int i = 0; i < b.Count; i++) // счётчик для списка b { for (int j = 0; j < a.Count; j++) // счётчик для списка a { if (b[i] == a[j]) // если элемент из списка b совпадает с элементом из a, { count[i] += count[j + n]; // то к элементу из списка b суммируется количество элементов из списка a a.RemoveAt(j); // удаляем элемент из списка а count.RemoveAt(j + n); // удаляем элемент из списка количества символов, т.к. он уже суммирован } } } for (int j = 0; j < a.Count; j++) b.Add(a[j]); // оставшиеся элементы из списка a добавляем в список b } for (int i = 0; i < b.Count; i++) Console.Write(b[i] + " - " + count[i] + "\r\n"); // выводим символы и их количество sr.Close(); // закрываем файл