```python
from typing import List, Dict, Optional

def column_digest(rows: List[List[int]], column: int) -> Dict[str, int]:
    if column < 0 or column >= len(rows[0]):
        raise ValueError("Column index out of range")
    
    count = 0
    min_val = float('inf')
    max_val = float('-inf')
    total_sum = 0
    sorted_values = []
    
    for row in rows:
        if column < len(row):
            count += 1
            min_val = min(min_val, row[column])
            max_val = max(max_val, row[column])
            total_sum += row[column]
            sorted_values.append(row[column])
    
    if count == 0:
        return {
            'count': 0,
            'min': 0,
            'max': 0,
            'mean': 0,
            'median': 0
        }
    
    sorted_values.sort()
    median = sorted_values[count // 2] if count % 2 != 0 else (sorted_values[count // 2 - 1] + sorted_values[count // 2]) / 2
    
    mean = round(total_sum / count, 2)
    median = round(median, 2)
    
    return {
        'count': count,
        'min': min_val,
        'max': max_val,
        'mean': mean,
        'median': median
    }
```