input: def distinguish_cats_and_dogs(dataset_path: str) -> keras.models.Sequential:
      """ Build and compile a machine learning model using Keras to distinguish between cats and dogs.
      The model uses Conv2D, MaxPooling2D, and Dropout layers for feature extraction and regularization.
      Finally, it uses Dense layers to predict the class. The model is compiled with binary crossentropy
      loss and the Adam optimizer, aiming for accuracy.
      
      >>> distinguish_cats_and_dogs('/path/to/dataset')
      <keras.models.Sequential object at 0x...>
      """
output:     model = keras.models.Sequential([
          keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
          keras.layers.MaxPooling2D(pool_size=(2, 2)),
          keras.layers.Conv2D(64, (3, 3), activation='relu'),
          keras.layers.MaxPooling2D(pool_size=(2, 2)),
          keras.layers.Conv2D(128, (3, 3), activation='relu'),
          keras.layers.MaxPooling2D(pool_size=(2, 2)),
          keras.layers.Conv2D(128, (3, 3), activation='relu'),
          keras.layers.MaxPooling2D(pool_size=(2, 2)),
          keras.layers.Flatten(),
          keras.layers.Dropout(0.5),
          keras.layers.Dense(512, activation='relu'),
          keras.layers.Dense(1, activation='sigmoid')
      ])
  
      model.compile(loss='binary_crossentropy',
                    optimizer=keras.optimizers.Adam(learning_rate=1e-4),
                    metrics=['accuracy'])
  
      return model