What is a Substring?
A subsequence is a sequence that can be derived from another sequence by removing zero or more elements, without changing the order of the remaining elements. More generally, we can say that for a sequence of size n, we can have (2n-1) non-empty sub-sequences in total.