1def get_next(char):2x = ord(char) - ord("a")3x = (x + 1) % 264return chr(ord("a") + x)567class Solution:8def findSubstringInWraproundString(self, p: str) -> int:9i = 010n = len(p)11map_ = collections.defaultdict(int)12while i < n:13start = i14prev_val = p[i]15while i + 1 < n and get_next(prev_val) == p[i + 1]:16prev_val = p[i + 1]17i += 118while start <= i:19curr_val = i - start + 120map_[p[start]] = max(map_[p[start]], curr_val)21start += 122i += 123return sum(map_.values())