public ListNode reverseKGroup(ListNode head, int k) {
        int len = findLength(head);
        if(head == null || k == 0 || len < k) return head;
        ListNode next = head;
        for(int i = 0; i < k; i++) next = next.next;
        ListNode node = reverse(head, k);
        head.next = reverseKGroup(next, k);
        return node;
    }