public object PartTwo(string input) {
var suffix = new [] { 17, 31, 73, 47, 23 };
var chars = input.ToCharArray().Select(b => (int)b).Concat(suffix);
var hash = KnotHash(chars, 64);
return string.Join("",
from blockIdx in Enumerable.Range(0, 16)
let block = hash.Skip(16 * blockIdx).Take(16)
select block.Aggregate(0, (acc, ch) => acc ^ ch).ToString("x2"));
}