If you use HSC then each channel takes up two inputs.
If you want to save on inputs and your frequency is low, then you could define input 3 as an interrupt input and then in the custom function that handles this interrupt, you can use a variable as a counter:
C = C+1
each time there is a transition in the input. That way input 4 will still be available for normal input.
If you use ordinary input, then how fast it can accept the input pulse stream depends on the scan time of the program which is dependent on the program length and how complex the custom function is. It is less deterministic compared to using INTERRUPT or HSC.