input: Write a Python function `find_unique_substrings` that accepts a list of non-empty strings and returns a list containing the smallest unique substrings for each string. Each element in the result should be the shortest substring of the corresponding input string that does not appear in any other string in the list. If there are multiple shortest substrings, return the lexicographically smallest one, and if no such substring exists, return an empty string.
  
  from typing import List
  
  def find_unique_substrings(arr: List[str]) -> List[str]:
      """
      Given an array of non-empty strings, determine a new array where each element is the shortest substring of the corresponding input string that does not occur in any other string in the array. If multiple such substrings are found, return the lexicographically smallest one. If no such substring exists, return an empty string.
  
      Examples:
      >>> arr = ["cab","ad","bad","c"]
      ["ab","","ba",""]
      >>> arr = ["abc","bcd","abcd"]
      ["","","abcd"]
  
      Constraints:
      n == arr.length
      2 <= n <= 100
      1 <= arr[i].length <= 20
      arr[i] contains only lowercase English letters.
      """
output: def find_unique_substrings(arr: List[str]) -> List[str]:
      def is_unique(substring, index):
          for i, s in enumerate(arr):
              if i != index and substring in s:
                  return False
          return True
  
      def find_smallest_unique(s, index):
          for length in range(1, len(s) + 1):
              substrings = sorted([s[i:i+length] for i in range(len(s) - length + 1)])
              for sub in substrings:
                  if is_unique(sub, index):
                      return sub
          return ""
  
      return [find_smallest_unique(s, i) for i, s in enumerate(arr)]