/*
    可以对P串进行替换和交换,问T串有多少位置跟P是匹配的 n<=500000

    统计下各个字母出现的次数,判断是否相等就可以了
    但是要写得好,O(n)
    我写得不好,参考watashi的
    他用l[i]记录字母出现i次的个数
    一开始先存P的l[]数组
    然后对于T的字母,判断能否抵消,如果能全部抵消,即k=m,就匹配了
    抵消,即l[]全部为0了
*/
#include
<iostream>
#include
<cstring>
#include
<map>
#include
<algorithm>
#include
<stack>
#include
<queue>
#include
<cmath>
#include
<cstring>
#include
<cstdlib>
#include
<vector>
#include
<cstdio>

using namespace std;

const int MAXN = 500500;
const int SIGMA = 256;

char T[MAXN] , P[MAXN];
int l[MAXN] , c[SIGMA];

int main()
{
    
while(~scanf("%s%s",T,P))
    {
        
int n = strlen(T);
        
int m = strlen(P);
        
        fill(c,c
+SIGMA,0);
        
for(int i= 0 ; i < m ; i ++)
            c[P[i]]
++;
        fill(l
+1,l+1+m,0);
        
for(int i = 0 ; i < SIGMA ; i ++)
            l[c[i]]
--;//
        
        
int k = count(l+1,l+1+m,0);

        vector
<int>ans;
        
        fill(c,c
+SIGMA,0);
        
for(int i = 0 ; i < n ; i ++)
        {
            
if(i>=m)//del
            {
                
int &cc = c[T[i-m]];

                
if(l[cc] == 0)k--;
                
else if(l[cc] == 1)k++;
                l[cc]
--;

                cc
--;
                
if(cc!=0)
                {
                    
if(l[cc] == -1)k++;
                    
else if(l[cc] == 0)k--;
                    l[cc]
++;
                }
            }

            
//add
            int &cc = c[T[i]];
            
if(cc!=0)
            {
                
if(l[cc] == 0)k--;
                
else if(l[cc] == 1)k++;
                l[cc]
--;
            }

            cc
++;
            
if(l[cc] == -1)k++;
            
else if(l[cc] == 0)k--;
            l[cc]
++;

            
if(k==m)
            {
                ans.push_back(i
-m+1);
            }
        }

        
if(ans.empty())
        {
            puts(
"No");
        }
        
else 
        {
            puts(
"Yes");
            
for(int i  = 0 ; i < ans.size() ; i ++)
            {
                
if(i)
                    putchar(
' ');
                printf(
"%d",ans[i]);
            }
            puts(
"");
        }
    }
    
return 0;
}