using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var dct = new Dictionary<string, string>();
dct.Add("aa", "0");
dct.Add("a1", "1");
dct.Add("ab", "2");
dct.Add("rr", "3");
dct.Add("r0", "4");
dct.Add("s0", "5");
dct.Add("s1", "6");
dct.Add("s2", "7");
dct.Add("st", "8");
dct.Add("ss", "9");
dct.Add("lt", "10");
dct.Add("ll", "11");
var pat = $@"\b(?:{string.Join("|",dct.Keys.Select(k => Regex.Escape(k)).OrderByDescending(x => x.Length))})\b";
Console.WriteLine(pat);
var input ="aa a1 ab rr r0 s0 s1 s2 st ss lt ll lllllllrt";
var output = Regex.Replace(input, pat, m => dct[m.Value]);
Console.Write(output);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwogCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgZGN0ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KCk7CgkJZGN0LkFkZCgiYWEiLCAiMCIpOwoJCWRjdC5BZGQoImExIiwgIjEiKTsKCQlkY3QuQWRkKCJhYiIsICIyIik7CgkJZGN0LkFkZCgicnIiLCAiMyIpOwoJCWRjdC5BZGQoInIwIiwgIjQiKTsKCQlkY3QuQWRkKCJzMCIsICI1Iik7CgkJZGN0LkFkZCgiczEiLCAiNiIpOwoJCWRjdC5BZGQoInMyIiwgIjciKTsKCQlkY3QuQWRkKCJzdCIsICI4Iik7CgkJZGN0LkFkZCgic3MiLCAiOSIpOwoJCWRjdC5BZGQoImx0IiwgIjEwIik7CgkJZGN0LkFkZCgibGwiLCAiMTEiKTsKCQl2YXIgcGF0ID0gJEAiXGIoPzp7c3RyaW5nLkpvaW4oInwiLGRjdC5LZXlzLlNlbGVjdChrID0+IFJlZ2V4LkVzY2FwZShrKSkuT3JkZXJCeURlc2NlbmRpbmcoeCA9PiB4Lkxlbmd0aCkpfSlcYiI7CgkJQ29uc29sZS5Xcml0ZUxpbmUocGF0KTsKCQl2YXIgaW5wdXQgPSJhYSBhMSBhYiByciByMCBzMCBzMSBzMiBzdCBzcyBsdCBsbCBsbGxsbGxscnQiOwoJCXZhciBvdXRwdXQgPSBSZWdleC5SZXBsYWNlKGlucHV0LCBwYXQsIG0gPT4gZGN0W20uVmFsdWVdKTsgCgkJQ29uc29sZS5Xcml0ZShvdXRwdXQpOwoJfQp9Cg==