1048. Longest String Chain

class Solution:
    def longestStrChain(self, words: List[str]) -> int:

        dp = defaultdict(int)

        words.sort(key=len)

        globalMax = 0

        for word in words:
            dp[word] = 1

            for i in range(len(word)):
                preWord = word[:i] + word[i + 1:]
                dp[word] = max(dp[word], 1 + dp[preWord])

            globalMax = max(globalMax, dp[word])

        return globalMax