use std::fs::File;
use std::io::{self, prelude::*, BufReader};

fn find_digit(line: String, match_array: &[&str]) -> u32 {
    println!("{}", line);
    for (i, item) in line.chars().enumerate(){
        if item.is_numeric() {
            return item as u32 - '0' as u32;
        }
        else {
            for count in 0..match_array.len() {
                if line[0..i+1].contains(match_array[count]) {
                    return count as u32;
                }
            }
        }
    }
    return 0;
}

static texts: [&str; 10] = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
static rev_texts: [&str; 10] = ["orez", "eno", "owt", "eerht", "ruof", "evif", "xis", "neves", "thgie", "enin"];

fn process_line(line: String) -> u32 {
    let first_digit: u32 = find_digit(line.clone(), &texts);
    let last_digit: u32 = find_digit(line.chars().rev().collect::<String>().clone(), &rev_texts);
    println!("{}{}", first_digit, last_digit);
    return first_digit*10+last_digit;
}


fn main() -> io::Result<()>  {
    let mut sum: u32 = 0;
    let file = File::open("../input.txt")?;
    let reader = BufReader::new(file);
    for line in reader.lines() {
        sum = process_line(line?) + sum;
    }
    println!("{}", sum);

    Ok(())
}