Count Distinct sobre partición por sql

Tengo una mesa como

col1ID  col2String Col3ID Col4String Col5Data
  1        xxx       20      abc     14-09-2018
  1        xxx       20      xyz     14-09-2018
  2        xxx       30      abc     14-09-2018
  2        xxx       30      abc     14-09-2018 

Me gustaría agregar una columna que cuente cuántas cadenas diferentes tengo en el grupo col4String por col1ID y col3ID.

Así que algo así como

COUNT(DISTINCT (Col4String)) over (partition by col1ID, col3ID)

pero no funciona, recibo un error

l uso de DISTINCT no está permitido con la cláusula OVER.
Msg 102, Nivel 15, Estado 1, Línea 23.

Tengo más columnas como col2String, col5Data pero no deberían verse afectadas, por lo que no puedo usar distintas al principio deSELECT ydense_rank() tampoco parece funcionar en mi caso.

Gracias por ayudar

Respuestas a la pregunta(5)

Su respuesta a la pregunta