n = 5 
k = 3


def rabbit_number(n, k):
    mature = 0
    immature = 1
    for i in range(1, n):
        new_mature = mature + immature
        new_immature = mature * k
        mature = new_mature
        immature = new_immature
    return mature + immature

print(rabbit_number(5, 3))
print(rabbit_number(28, 5))
19
662854323131
mature = 0
immature = 1

mature = (mature * k) + immature

print(mature)
1
#another method
def rabbit_number(n, k):
    if n == 1 or n == 2:
        return 1
    
    prev2 = 1  # F(1)
    prev1 = 1  # F(2)
    
    for i in range(3, n + 1):
        current = prev1 + k * prev2
        prev2 = prev1
        prev1 = current
    
    return prev1
# from community Suhail_27 solution
def rabbit(n, k):
    f1 = 1
    f2 = 1
    for i in range(3, n + 1):
        current = f2 + (f1 * k)
        f1 = f2
        f2 = current
    return f2
print(rabbit(5, 3))
19