Count substrings containing at least one of each: "a", "b", "c".

Input: s="abcabc" → Output: 10 Input: s="aaacb" → Output: 3

For each right, track last seen position of a,b,c. Valid substrings end at right, start at 0..min(last[a],last[b],last[c]).

public int numberOfSubstrings(String s) { int[] last = {-1, -1, -1}; int count = 0; for (int i = 0; i < s.length(); i++) { last[s.charAt(i) - 'a'] = i; count += 1 + Math.min(last[0], Math.min(last[1], last[2])); } return count; }