input: Write a function to index characters in a list of strings.
  assert index_strings(["I am learning python", "I love coding", "Coding is awesome"]) == {
      'I': [(0, 'I am learning python'), (0, 'I love coding')], 
      'a': [(2, 'I am learning python'), (3, 'Coding is awesome')],
      'm': [(3, 'I am learning python')],
      'l': [(5, 'I am learning python'), (2, 'I love coding')],
      'e': [(7, 'I am learning python'), (6, 'I love coding'), (5, 'Coding is awesome')],
      'r': [(8, 'I am learning python')],
      'n': [(10, 'I am learning python'), (5, 'Coding is awesome')],
      'i': [(12, 'I am learning python'), (2, 'I love coding'), (6, 'Coding is awesome')],
      'g': [(14, 'I am learning python'), (3, 'I love coding'), (7, 'Coding is awesome')],
      'p': [(17, 'I am learning python')],
      'y': [(19, 'I am learning python')],
      't': [(20, 'I am learning python')],
      'h': [(21, 'I am learning python')],
      'o': [(2, 'I love coding'), (1, 'Coding is awesome')],
      'c': [(4, 'I love coding'), (0, 'Coding is awesome')],
      'd': [(5, 'I love coding'), (1, 'Coding is awesome')],
      's': [(2, 'Coding is awesome')],
      'w': [(4, 'Coding is awesome')]
  }
  assert index_strings(["hello", "world"]) == {
      'h': [(0, 'hello')],
      'e': [(1, 'hello')],
      'l': [(2, 'hello'), (3, 'hello')],
      'o': [(4, 'hello'), (1, 'world')],
      'w': [(0, 'world')],
      'r': [(2, 'world')],
      'd': [(4, 'world')]
  }
  assert index_strings([]) == {}
output: def index_strings(strings):
      index = {}
      for string in strings:
          for i, char in enumerate(string):
              if char not in index:
                  index[char] = []
              index[char].append((i, string))
      return index