R, 52 51 50 bytes
cat(gsub(1,"known","1 1s
1 un1s
un1 1s
un1 un1s"))
Surprisingly short substitution and print commands make this an actually competitive R answer in a string challenge!
Even if it's super boring. Mildly more interesting now, and with a byte saved thanks to J.Doe!
Saved another byte thanks to this answer, also by J.Doe!
R, 55 bytes
cat(t(outer(x<-c('known','unknown'),x,paste)),sep='s
')
Ports the cartesian product approach I've seen in several answers, but it's probably closest to Peter Taylor's. It's still longer than the "boring" one but it's still pretty close.
R, 55 bytes
credit to plannapus for this one
cat(paste(rep(a<-c("known","unknown"),e=2),a),sep="s
")
Another 55-byter; rep
licates known,unknown
e
ach twice and takes advantage of paste
's recycling to get the same result as the outer
.