## Problem Description and Formulation

The problem is a classic example of a linear programming problem. The goal is to maximize the profit of a teddy bear shop by determining the optimal number of small and large teddy bears to produce, given the constraints on filling and stitching time.

Let's define the decision variables:

* `x`: number of small teddy bears to produce
* `y`: number of large teddy bears to produce

The objective function to maximize is the total profit:

* `Profit = 50x + 8y`

The constraints are:

* Filling time: `5x + 10y <= 700`
* Stitching time: `25x + 35y <= 900`
* Non-negativity: `x >= 0`, `y >= 0`

## Gurobi Code

```python
import gurobi

# Create a new Gurobi model
m = gurobi.Model()

# Define the decision variables
x = m.addVar(lb=0, name="small_teddy_bears")
y = m.addVar(lb=0, name="large_teddy_bears")

# Define the objective function
m.setObjective(50 * x + 8 * y, gurobi.GRB.MAXIMIZE)

# Define the constraints
m.addConstr(5 * x + 10 * y <= 700, name="filling_time")
m.addConstr(25 * x + 35 * y <= 900, name="stitching_time")

# Optimize the model
m.optimize()

# Print the solution
if m.status == gurobi.GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Number of small teddy bears: {x.varValue}")
    print(f"Number of large teddy bears: {y.varValue}")
    print(f"Maximum profit: {m.objVal}")
else:
    print("No optimal solution found.")
```

This code defines the decision variables, objective function, and constraints, and then solves the model using Gurobi's optimization algorithm. If an optimal solution is found, it prints the number of small and large teddy bears to produce and the maximum profit. Otherwise, it indicates that no optimal solution was found.