You can use str.contains, but only on Series not on DataFrames. So to use it we look at each column (which is a series) one by one by for looping over them:
>>> import pandas as pd
>>> df = pd.DataFrame([['DDDA', 'DDDB', 'DDDC', 'DDDD'],
                       ['DDDE', 'DDDF', 'DDDG', 'DHDD'],
                       ['DDDI', 'DDDJ', 'DDDK', 'DDDL'],
                       ['DMDD', 'DNDN', 'DDOD', 'DDDP']],
                       columns=['A', 'B', 'C', 'D'])
>>> for column in df.columns:
        df = df[df[column].str.contains('DDD')]
In our for loop we're overwriting the DataFrame df with df where the column contains 'DDD'. By looping over each column we cut out rows that don't contain 'DDD' in that column until we've looked in all of our columns, leaving only rows that contain 'DDD' in every column.
This gives you:
>>> print(df)
      A     B     C     D
0  DDDA  DDDB  DDDC  DDDD
2  DDDI  DDDJ  DDDK  DDDL
As you're only looping over 10 columns this shouldn't be too slow.
Edit: You should probably do it without a for loop as explained by Christian Sloper as it's likely to be faster, but I'll leave this up as it's slightly easier to understand without knowledge of lambda functions.