===== ISTEM =====
Solve the following programming task.

TASK: Longest Common Subsequence

Write a function 'longest_common_subsequence(text1, text2)' that computes the length of the longest common subsequence (LCS) of the two given strings.

STARTER CODE (python):
def longest_common_subsequence(text1: str, text2: str) -> int:
    # Write your code here
    pass


RULES:
- Keep the function name and signature EXACTLY as given.
- Return working code only. No explanations.
- Put the code in a single ``` block.
- Try to solve it first. If you genuinely cannot, write only this single
  line instead of producing faulty code: CANNOT_SOLVE

===== HAM YANIT =====
```python
def longest_common_subsequence(text1: str, text2: str) -> int:
    # Ensure text1 is the shorter string to minimize space usage
    if len(text1) > len(text2):
        text1, text2 = text2, text1

    m, n = len(text1), len(text2)
    # dp[j] will hold LCS length for text1 up to i and text2 up to j
    prev = [0] * (m + 1)
    for i in range(1, n + 1):
        curr = [0] * (m + 1)
        for j in range(1, m + 1):
            if text2[i - 1] == text1[j - 1]:
                curr[j] = prev[j - 1] + 1
            else:
                curr[j] = max(prev[j], curr[j - 1])
        prev = curr
    return prev[m]
```