Given many words, words[i] has weight i.
Design a class WordFilter that supports one function, WordFilter.f(String prefix, String suffix).
It will return the word with given prefix and suffix with maximum weight.  If no word exists, return -1.
Examples:
Input:
WordFilter(["apple"])
WordFilter.f("a", "e") // returns 0
WordFilter.f("b", "") // returns -1
Note:
words has length in range [1, 15000].
For each test case, up to words.length queries WordFilter.f may be made.
words[i] has length in range [1, 10].
prefix, suffix have lengths in range [0, 10].
words[i] and prefix, suffix queries consist of lowercase letters only.
class Solution:
     def nextGreatestLetter(self, letters, target):
         """
         :type letters: List[str]
         :type target: str
         :rtype: str
         """
         if letters[-1] < target:
             return letters[0]    
         
         for letter in letters:
             if letter > target:
                 return letter
         return letters[0] 
class Solution:
     def nextGreatestLetter(self, letters, target):
         """
         :type letters: List[str]
         :type target: str
         :rtype: str
         """
         if letters[-1] < target:
             return letters[0]    
         
         for letter in letters:
             if letter > target:
                 return letter
         return letters[0] 