def getIntersectionNode(headA: ListNode, headB: ListNode) -> Optional[ListNode]:
s = set()
# create set of node of headA
while headA:
s.add(headA)
headA = headA.next
# iterate of nodes of headB and return the first one that is in s
while headB:
if headB in s:
return(headB)
headB = headB.next
# if no node of headB is in s then the intersection is empty
return(None)