Step 1: Set the rule for best fit.
Best fit always picks the tightest hole, the smallest one that can still hold the incoming process. Starting holes: $20, 4, 25, 18, 7, 9, 15, 12$ (all in KB).
Step 2: Fit P1, which needs 16 KB.
Holes big enough for 16 KB are $20, 25, 18$. The tightest of these is $18$. Placing P1 there leaves a stub of $18-16=2$ KB in place of the old 18 KB hole.
Updated list: $20, 4, 25, 7, 9, 15, 12, 2$.
Step 3: Fit P2, which needs 9 KB.
Holes big enough for 9 KB are $20, 25, 9, 15, 12$. The tightest is $9$, an exact match, so this hole is used up completely and vanishes from the list.
Updated list: $20, 4, 25, 7, 15, 12, 2$.
Step 4: Sort by size and mark the small ones.
Writing the list in order: $2, 4, 7, 12, 15, 20, 25$. The values under 8 KB are $2, 4, 7$, which is $3$ holes.
\[ \boxed{3} \]