```python
def column_digest(rows: list, column: int) -> dict:
    if column < 0 or not rows or not isinstance(rows[0], list):
        raise ValueError("Invalid input: column must be non-negative and rows must be non-empty and all rows must be lists.")

    cells = [row[column] for row in rows if column < len(row)]
    if not cells:
        return {'count': 0, 'min': 0, 'max': 0, 'mean': 0, 'median': 0}

    cells.sort()
    count = len(cells)
    min_val = cells[0]
    max_val = cells[-1]
    mean_val = sum(cells) / count
    median_val = cells[count // 2] if count % 2 != 0 else (cells[count // 2 - 1] + cells[count // 2]) / 2

    return {
        'count': count,
        'min': round(min_val, 2),
        'max': round(max_val, 2),
        'mean': round(mean_val, 2),
        'median': round(median_val, 2)
    }
```