## 583. Delete Operation for Two Strings

Given two words *word1* and *word2*, find the minimum number of steps required to make *word1* and *word2* the same, where in each step you can delete one character in either string.

**Example 1:**

Input:"sea", "eat"Output:2Explanation:You need one step to make "sea" to "ea" and another step to make "eat" to "ea".

**Note:**

- The length of given words won't exceed 500.
- Characters in given words can only be lower-case letters.

## Rust Solution

```
struct Solution;
impl Solution {
fn min_distance(word1: String, word2: String) -> i32 {
let n = word1.len();
let m = word2.len();
let w1: Vec<char> = word1.chars().collect();
let w2: Vec<char> = word2.chars().collect();
let mut dp = vec![vec![0; m + 1]; n + 1];
for i in 0..n {
for j in 0..m {
if w1[i] == w2[j] {
dp[i + 1][j + 1] = dp[i][j] + 1;
} else {
dp[i + 1][j + 1] = dp[i][j + 1].max(dp[i + 1][j]);
}
}
}
(n + m - dp[n][m] * 2) as i32
}
}
#[test]
fn test() {
let word1 = "sea".to_string();
let word2 = "eat".to_string();
let res = 2;
assert_eq!(Solution::min_distance(word1, word2), res);
}
```

Having problems with this solution? Click here to submit an issue on github.