':type s1: str
:type s2: str
:rtype: bool'

def checkInclusion(self, s1, s2):

    counts = collections.Counter(s1)
    l = len(s1)
    for i in xrange(len(s2)):
        if (counts[s2[i]] > 0):
            l -= 1
        counts[s2[i]] -= 1
        if (l == 0):
            return True
        start = ((i + 1) - len(s1))
        if (start >= 0):
            counts[s2[start]] += 1
            if (counts[s2[start]] > 0):
                l += 1
    return False
