Here is the full accepted solution for the problem, sorry for the low audio today guys! : class BIT: def __init__ self, size: self.tree = 0 * size + 2 def update self, i, val: i += 1 while i less than len self.tree: self.tree i += val i += i & -i def query self, i: i += 1 res = 0 while i greater than 0: res += self.tree i i -= i & -i return res class Solution: def goodTriplets self, nums1: List int, nums2: List int - int: n = len nums1 pos = val: idx for idx, val in enumerate nums2 transformed = pos val for val in nums1 left = 0 * n bit1 = BIT n for i in range n: left i = bit1.query transformed i - 1 bit1.update transformed i, 1 right = 0 * n bit2 = BIT n for i in range n - 1, -1, -1: right i = bit2.query n - 1 - bit2.query transformed i bit2.update transformed i, 1 res = 0 for i in range n: res += left i * right i return res