
def main():
    input()
    line = input()
    tiles = [op for op in line]
    patios(tiles)



def patios(tiles):
    res = 0
    buffer = []
    n = 3
    j = n**2 - 1
    while j < len(tiles):
        x, o = amount(tiles, 0, j)
        buffer.append([x, o, j])
        n += 1
        j = n**2 - 1
    for i in range(0, len(tiles) - 8):
        for nums in buffer:
            j = nums[2]
            if is_correct(nums[0], nums[1]):
                res += 1
            if j + i + 1 >= len(tiles):
                buffer.pop()
                continue
            if tiles[i] == 'X':
                nums[0] -= 1
            else:
                nums[1] -= 1
            
            
            if tiles[i + j] == 'X':
                nums[0] += 1
            else:
                nums[1] += 1
            


        


    
    print(res)

def amount(ls, i, j):
    x = 0
    o = 0
    for n in range(i, j + 1):
        if ls[n] == "X":
            x += 1
        else:
            o += 1
    return x, o



def is_correct(x, o):
    return is_good(x,o) or is_good(o,x)


def is_good(x,o):
    side = round((x + o)**(1/2))
    return x == (x + o) - (side - 2)**2


main()
def tests():
    patios(['X', 'O', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X',])
    