DP + hash table