using System;
using System.Collections.Generic;
using System.Linq;
public class Program {
public static void Main() {
var lista = new List<string> { "AAA", "BBB", "CCC", "ABB", "ABC", "ACC", "ACD" };
var padrao = "A";
foreach (var item in lista.OrderByDescending(x => x.Select((c, i) => x.Substring(i)).Count(sub => sub.StartsWith(padrao)))) {
Console.WriteLine(item);
}
Console.WriteLine();
padrao = "AB";
foreach (var item in lista.OrderByDescending(x => x.Select((c, i) => x.Substring(i)).Count(sub => sub.StartsWith(padrao)))) {
Console.WriteLine(item);
}
}
}
//https://pt.stackoverflow.com/q/259493/101
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgUHJvZ3JhbSB7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpIHsKCQl2YXIgbGlzdGEgPSBuZXcgTGlzdDxzdHJpbmc+IHsgIkFBQSIsICJCQkIiLCAiQ0NDIiwgIkFCQiIsICJBQkMiLCAiQUNDIiwgIkFDRCIgfTsKCQl2YXIgcGFkcmFvID0gIkEiOwoJCWZvcmVhY2ggKHZhciBpdGVtIGluIGxpc3RhLk9yZGVyQnlEZXNjZW5kaW5nKHggPT4geC5TZWxlY3QoKGMsIGkpID0+IHguU3Vic3RyaW5nKGkpKS5Db3VudChzdWIgPT4gc3ViLlN0YXJ0c1dpdGgocGFkcmFvKSkpKSB7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKGl0ZW0pOwoJCX0KCQlDb25zb2xlLldyaXRlTGluZSgpOwoJCXBhZHJhbyA9ICJBQiI7CgkJZm9yZWFjaCAodmFyIGl0ZW0gaW4gbGlzdGEuT3JkZXJCeURlc2NlbmRpbmcoeCA9PiB4LlNlbGVjdCgoYywgaSkgPT4geC5TdWJzdHJpbmcoaSkpLkNvdW50KHN1YiA9PiBzdWIuU3RhcnRzV2l0aChwYWRyYW8pKSkpIHsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoaXRlbSk7CgkJfQoJfQp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS8yNTk0OTMvMTAx