use std::collections::HashSet; use proconio::{input, marker::Bytes}; fn main() { const W: usize = 6; input! { a:[Bytes;W], } let mut newa = vec![vec![0; W]; W]; for i in 0..W { for j in 0..W { newa[i][j] = (a[i][j] - b'0') as usize; } } let mut b = vec![vec![vec![0; W]; 10]; W]; for i in 0..W { let mut bi = newa[i].clone(); for j in 0..10 { b[i][j] = bi.clone(); for k in 0..W { bi[k] = (bi[k] + newa[i][k]) % 10; } } } let mut hs = HashSet::new(); for i in 0..10 { for j in 0..10 { for k in 0..10 { for l in 0..10 { for m in 0..10 { for n in 0..10 { let mut c = vec![0; W]; for o in 0..W { c[o] = (b[0][i][o] + b[1][j][o] + b[2][k][o] + b[3][l][o] + b[4][m][o] + b[5][n][o]) % 10; } hs.insert(c); } } } } } } let ans = hs.len(); println!("{}", ans); }