class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        if(!pHead1 || !pHead2) return nullptr;
		int len=0;
		for(ListNode* cur = pHead1 ; cur!=nullptr ; cur = cur->next)
		{
			++len;
		}
		for(ListNode* cur = pHead2 ; cur ; cur = cur->next)
		{
			--len;
		}
		ListNode* cur1, *cur2;
		cur1 = len>0 ? pHead1 : pHead2;
		cur2 = (cur1==pHead1) ? pHead2 : pHead1;
		len = len>0 ? len : -len;
		while(len--)
		{
			cur1 = cur1->next;
		}
		while(cur1 != cur2)
		{
			cur1 = cur1->next;
			cur2 = cur2->next;
		}
		return cur1;
    }
};