def solution(cards): cycle_length = [0, 0] group = [-1] * len(cards) for i in range(len(cards)): if group[i] != -1: continue curr = i count = 0 while group[curr] == -1: group[curr] = i curr = cards[curr] - 1 count += 1 cycle_length = sorted(cycle_length + [count])[-2:] return cycle_length[0] * cycle_length[1]