datrie and kmp