extern crate rand;
use rand::Rng;

fn kenchan_builder(limit: i32) -> String {
    let mut kenchan = "けんちゃん".to_string();
    let mut kenchan_size = 5;
    let mut rng = rand::thread_rng();

    loop {
        let rest = limit - kenchan_size;

        if rest < 2 {
            break;
        } else {
            match rng.gen::<u32>() % 3 {
                0 => {
                    kenchan = format!("{}{}", kenchan, "くん".to_string());
                    kenchan_size = kenchan_size + 2;
                },
                1 => {
                    kenchan = format!("{}{}", kenchan, "さん".to_string());
                    kenchan_size = kenchan_size + 2;
                },
                2 => {
                    if rest > 2 {
                        kenchan = format!("{}{}", kenchan, "ちゃん".to_string());
                        kenchan_size = kenchan_size + 3;
                    }
                },
                _ => {
                },
            }
        }
    }

    kenchan
}

fn main() {
    println!("{}", kenchan_builder(140));
}