Rotate a Linked List (LC-0061)

class Solution:
    def rotateRight(self, head, k):
        
        def revk(node, k):
            prev = None
            curr = node
            while k > 0 and curr:
                temp = curr.next
                curr.next = prev
                prev = curr
                curr = temp
                k = k - 1
            return prev, curr
        
        L = 0
        temp = head
        while temp: temp, L = temp.next, L + 1
        l1, l2 = revk(head, 0 if L == 0 else L - (k % L))
        l1, _ = revk(l1, 501)

        if not l2:
            return l1
        res = l2
        while res and res.next:
            res = res.next
        res.next = l1
        return l2