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