Just a runnable solution
Code\n\nimpl Solution {\n    pub fn find_the_string(lcp: Vec<Vec<i32>>) -> String {\n        let n = lcp.len();\n        let mut arr = vec![0; n];\n        let 
# Code\n```\nimpl Solution {\n    pub fn find_the_string(lcp: Vec<Vec<i32>>) -> String {\n        let n = lcp.len();\n        let mut arr = vec![0; n];\n        let mut c = 0;\n        for i in 0..n {\n            if arr[i] != 0 {\n                continue;\n            }\n            c += 1;\n            if c > 26 {\n                return "".to_string();\n            }\n            for (j, arr_j) in arr.iter_mut().enumerate().skip(i).take(n) {\n                if lcp[i][j] > 0 {\n                    *arr_j = c;\n                }\n            }\n        }\n        for i in 0..n {\n            for j in 0..n {\n                let v = if i + 1 < n && j + 1 < n { lcp[i + 1][j + 1] } else { 0 };\n                let v = if arr[i] == arr[j] { v + 1 } else { 0 };\n                if lcp[i][j] != v {\n                    return "".to_string();\n                }\n            }\n        }\n        let mut res = String::new();\n        for c in arr {\n            res.push((b\'a\' + c - 1) as char);\n        }\n        res\n    }\n}\n```
['Rust']