using System;
using System.Text;
public class Test
{
private static string FindLcs(string s, string t) {
var L = new int[s.Length, t.Length];
var z = 0;
var ret = new StringBuilder();
for (var i = 0 ; i != s.Length ; i++) {
for (var j = 0 ; j != t.Length ; j++) {
if (s[i] == t[j]) {
if (i == 0 || j == 0) {
L[i,j] = 1;
} else {
L[i,j] = L[i-1,j-1] + 1;
}
if (L[i,j] > z) {
z = L[i,j];
ret = new StringBuilder();
}
if (L[i,j] == z) {
ret.Append(s.Substring( i-z+1, z));
}
} else {
L[i,j]=0;
}
}
}
return ret.ToString();
}
private static string CutLcs(string s, string t) {
for (;;) {
var lcs = FindLcs(s, t);
if (lcs.Length < 10) break;
s = s.Replace(lcs, string.Format("[{0}]", lcs.Length));
}
return s;
}
public static void Main()
{
string firstS = "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDABQODxIPDRQSERIXFhQYHzMhHxwcHz8tLyUzSkFOTUlBSEZSXHZkUldvWEZIZoxob3p9hIWET2ORm4+AmnaBhH//2wBDARYXFx8bHzwhITx/VEhUf39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3//";
string secondS = "abcdefg2wBDABQODxIPDRQSERIXFh/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/abcdefg";
Console.WriteLine(CutLcs(firstS, secondS));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBGaW5kTGNzKHN0cmluZyBzLCBzdHJpbmcgdCkgewogICAgICAgIHZhciBMID0gbmV3IGludFtzLkxlbmd0aCwgdC5MZW5ndGhdOwogICAgICAgIHZhciB6ID0gMDsKICAgICAgICB2YXIgcmV0ID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICBmb3IgKHZhciBpID0gMCA7IGkgIT0gcy5MZW5ndGggOyBpKyspIHsKICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAgOyBqICE9IHQuTGVuZ3RoIDsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSB0W2pdKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBqID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgTFtpLGpdID0gMTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBMW2ksal0gPSBMW2ktMSxqLTFdICsgMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKExbaSxqXSA+IHopIHsKICAgICAgICAgICAgICAgICAgICAgICAgeiA9IExbaSxqXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKExbaSxqXSA9PSB6KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5BcHBlbmQocy5TdWJzdHJpbmcoIGkteisxLCB6KSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBMW2ksal09MDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0LlRvU3RyaW5nKCk7CiAgICB9CiAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgQ3V0TGNzKHN0cmluZyBzLCBzdHJpbmcgdCkgewogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgdmFyIGxjcyA9IEZpbmRMY3MocywgdCk7CiAgICAgICAgICAgIGlmIChsY3MuTGVuZ3RoIDwgMTApIGJyZWFrOwogICAgICAgICAgICBzID0gcy5SZXBsYWNlKGxjcywgc3RyaW5nLkZvcm1hdCgiW3swfV0iLCBsY3MuTGVuZ3RoKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzOwogICAgfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgIHN0cmluZyBmaXJzdFMgPSAiLzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzJ3QkRBQlFPRHhJUERSUVNFUklYRmhRWUh6TWhIeHdjSHo4dEx5VXpTa0ZPVFVsQlNFWlNYSFprVWxkdldFWklab3hvYjNwOWhJV0VUMk9SbTQrQW1uYUJoSC8vMndCREFSWVhGeDhiSHp3aElUeC9WRWhVZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzLy8iOwogICAgc3RyaW5nIHNlY29uZFMgPSAiYWJjZGVmZzJ3QkRBQlFPRHhJUERSUVNFUklYRmgvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvZjM5L2YzOS9mMzkvYWJjZGVmZyI7CiAgICBDb25zb2xlLldyaXRlTGluZShDdXRMY3MoZmlyc3RTLCBzZWNvbmRTKSk7Cgl9Cn0=