Please solve the programming task below using a self-contained code snippet in a markdown code block.

Given an array of strings words, return the smallest string that contains each string in words as a substring. If there are multiple valid strings of the smallest length, return any of them.
You may assume that no string in words is a substring of another string in words.
 
Please complete the following python code precisely:
```python
class Solution:
    def shortestSuperstring(self, words: List[str]) -> str:
```