The way I read your script, it will only change the data and modeling type for columns that immediately start with "Std" (e.g. a column named "Std Dev" would be modified, but a column named "Col Std" would not).
Contains() returns the position in the string of the substring you specified. If cols[i] = "Std Dev", Contains(cols[i],"Std") will return the value 1. If cols[i] = "Col Std", then Contains(cols[i], "Std") will return the value 5 because that "Std" starts with the 5th character in the string. Only if I try a column name that doesn't have the "Std" in the name will Contains() return 0.
Contains(cols[i], "Std") != 1 will return true for all columns names that don't immediately start with "Std".
Typically, the way to use Contains() to determine if a substring is contained within a string would be to use either "!=0" or ">0". Switch the 1 to a 0 and see if that works.