<s>[INST] ### Step 1: Define the Problem
The problem is to find the number of ways to distribute $N$ identical objects into $n$ distinct groups, such that each group has at least one object. We will use the stars and bars method to solve this problem.

### Step 2: Outline the Solution Strategy
We will use the stars and bars method, which is a combinatorial technique to count the number of ways to partition a set of objects into a given number of non-empty subsets.

### Step 3: Find the Number of Ways to Distribute N Identical Objects into n Distinct Groups
First, we need to find the total number of ways to distribute the objects, without the constraint of at least one object per group. This can be done using the formula $\binom{N+n-1}{n-1}$.

```python
import math

def calculate_ways(N, n):
    total_ways = math.comb(N+n-1, n-1)
    return total_ways
```

### Step 4: Find the Number of Ways to Distribute N Identical Objects into n Distinct Groups with at Least One Object per Group
Next, we need to subtract the number of ways to distribute the objects where one or more groups are empty. This can be done using the principle of inclusion-exclusion.

```python
def calculate_ways_at_least_one(N, n):
    total_ways = calculate_ways(N, n)
    # Subtract the number of ways to distribute the objects where one or more groups are empty
    # This can be done using the principle of inclusion-exclusion
    # However, in this case, we can use a simpler formula
    # The formula is the number of ways to distribute N-1 identical objects into n distinct groups
    # This is because we can first place one object in each group, and then distribute the remaining objects
    at_least_one_ways = math.comb(N-1, n-1)
    return at_least_one_ways
```

### Combine the Code
Now, let's combine the Python code from all the steps into a single function:

```python
import math

def calculate_ways_at_least_one(N, n):
    def calculate_ways(N, n):
        total_ways = math.comb(N+n-1, n-1)
        return total_ways
    
    total_ways = calculate_ways(N, n)
    at_least_one_ways = math.comb(N-1, n-1)
    return at_least_one_ways

# Execute the function
N = 10  # Number of identical objects
n = 3   # Number of distinct groups
result = calculate_ways_at_least_one(N, n)
print(result)
```

Let's execute the function with N = 10 and n = 3. The final answer should be $\boxed{?[/INST]