/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode cur1 = pHead1;
        int len1 = 0;
        ListNode cur2 = pHead2;
        int len2 = 0;

        while (cur1 != null) {
            len1++;
            cur1 = cur1.next;
        }
        while (cur2 != null) {
            len2++;
            cur2 = cur2.next;
        }
        int len = len2 - len1;
        if (len < 0) {
            len = len1 - len2;
        }
        cur1 = pHead1;
        cur2 = pHead2;
        if (len2 < len1) {
            for (int i = 1; i <= len; i++) {
                cur1 = cur1.next;
            }
        } else {
            for (int i = 1; i <= len; i++) {
                cur2 = cur2.next;
            }
        }
        while (cur1 != cur2) {
            cur1 = cur1.next;
            cur2 = cur2.next;
        }
        return cur1;
    }
}