def squares(a, b):
    # Write your code here
    a = math.ceil(math.sqrt(a))
    b = math.floor(math.sqrt(b)) + 1
    
    return b - a
def appendAndDelete(s, t, k):
    # Write your code here
    cnt = 0
    for a, b in zip(s, t):
        if a != b:
            break
        cnt += 1
    
    s = s[cnt:]
    t = t[cnt:]
    
    sl = len(s)
    tl = len(t)
    
    # 경우가 맞는건지 모르겠다.
    # 1. 횟수와 move 횟수가 같은 경우
    # 2. 이동 횟수가 k 이하이면서 짝수배인 경우(문자열이 2개니까 행동도 2번씩, 홀수면 안됨)
    # 3. 전체 행동 횟수가 k보다 낮은 경우
    if (k == sl + tl) or ((k - sl + tl) % 2 == 0 and k >= sl + tl) or (k >= cnt*2 + sl + tl):
        return 'Yes'
    else:
        return 'No'
def findDigits(n):
    # Write your code here
    cnt = 0
    for i in str(n):
        i = int(i)
        if i == 0:
            continue
        else:
            if n % i == 0:
                cnt += 1
                
    return cnt
def jumpingOnClouds(c, k):
    e = 100    # 에너지
    n = len(c)
    s = 0      # 시작은 0부터
    while True:
        s = (s + k) % n    # jump
        e -= (c[s] * 2) + 1 # thundercloud면 2가 추가로 감소
        
        # 시작점(0)으로 다시 되돌아가면 게임이 끝남
        if not s:
            break
        
    return e
def permutationEquation(p):
    # Write your code here
    result = [0] * len(p)
    
    for n in p:
        next_ = p[n - 1]
        next__ = p[next_ - 1]
        result[next__ - 1] = n
        
    return result