using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var txt = "moron and morons sat on moronic bench with mormons";
var words = Regex.Matches(txt, @"\w+").OfType<Match>().Select(c => c.Value).ToList();
var result = words.Select(c => new {Word = c, Count = words.Count(w => w.Contains(c))})
.OrderByDescending(o=> o.Count).ToList();
foreach (var wc in result)
{
Console.WriteLine($"{wc.Word}: {wc.Count}");
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJICAgICB2YXIgdHh0ID0gIm1vcm9uIGFuZCBtb3JvbnMgc2F0IG9uIG1vcm9uaWMgYmVuY2ggd2l0aCBtb3Jtb25zIjsKICAgICAgICB2YXIgd29yZHMgPSBSZWdleC5NYXRjaGVzKHR4dCwgQCJcdysiKS5PZlR5cGU8TWF0Y2g+KCkuU2VsZWN0KGMgPT4gYy5WYWx1ZSkuVG9MaXN0KCk7CiAgICAgICAgdmFyIHJlc3VsdCA9IHdvcmRzLlNlbGVjdChjID0+IG5ldyB7V29yZCA9IGMsIENvdW50ID0gd29yZHMuQ291bnQodyA9PiB3LkNvbnRhaW5zKGMpKX0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgLk9yZGVyQnlEZXNjZW5kaW5nKG89PiBvLkNvdW50KS5Ub0xpc3QoKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoICh2YXIgd2MgaW4gcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJ7d2MuV29yZH06IHt3Yy5Db3VudH0iKTsKICAgICAgICB9Cgl9Cn0=