Here's the formulation of the linear program and the Gurobi code to solve it:

**Decision Variables:**

* `x`: Acres of cranberries planted
* `y`: Acres of bilberries planted

**Objective Function:**

Maximize profit:  `66x + 73y`

**Constraints:**

* **Land Constraint:** `x + y <= 250` (Total acres cannot exceed 250)
* **Watering Cost Constraint:** `25x + 30y <= 9000` (Total watering cost cannot exceed $9000)
* **Labor Constraint:** `5x + 4y <= 600` (Total labor days cannot exceed 600)
* **Non-negativity Constraints:** `x >= 0`, `y >= 0` (Cannot plant negative acres)


```python
import gurobipy as gp
from gurobipy import GRB

# Create a new model
m = gp.Model("berry_farm")

# Create variables
x = m.addVar(lb=0, name="cranberries") # Acres of cranberries
y = m.addVar(lb=0, name="bilberries") # Acres of bilberries

# Set objective function
m.setObjective(66*x + 73*y, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x + y <= 250, "land")
m.addConstr(25*x + 30*y <= 9000, "watering")
m.addConstr(5*x + 4*y <= 600, "labor")

# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal Solution Found:")
    print(f"Plant {x.x:.2f} acres of cranberries")
    print(f"Plant {y.x:.2f} acres of bilberries")
    print(f"Maximum Profit: ${m.objVal:.2f}")
elif m.status == GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print(f"Optimization terminated with status {m.status}")

```
